Player kollidiert nur teilweise oder garnicht...*gelöst*
Übersicht

![]() |
5k41Betreff: Player kollidiert nur teilweise oder garnicht...*gelöst* |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo!
Ich hab mich in letzter Zeit ein bisschen mit 3D beschäftigt... und hab sofort mein erstes Problem mit (mit was sollte ich sonst Probleme haben) der KOLLISION! Ich wette das ist der 2000 Thread zu dem Problem aber ich konnte unter der Forum suche nichts finden...mein Problem am anfang war, das wenn ich meine schwerkraft benutze die objekkte in den Boden sunken...nun ist es noch erweiteret...ich wollte die Karte (das 3D Objekt) drehen und auf einmal, ab einem Bestimmten Winkel setzt die Kollision ganz aus...hier mein Code: Code: [AUSKLAPPEN] Graphics3D 1024,768,32,1 SetBuffer BackBuffer() cam1=CreateCamera() PositionEntity cam1,-120,0,0 TurnEntity cam1,0,270,0 CameraViewport cam1,0,0,512,768 cam2=CreateCamera() PositionEntity cam2,120,0,0 TurnEntity cam2,0,90,0 CameraViewport cam2,512,0,512,768 ;cam3=CreateCamera() ; PositionEntity cam3,0,0,-100 ; CameraViewport cam3,412,924,100,100 Const PLAYER=1,KUGEL=2,WAND=3,TOR2=4,TOR1=5 light=CreateLight(1) d_winkel#=0 p1_ygrav#=0 p1_zgrav#=0 p2_ygrav#=0 p2_zgrav#=0 gravity#=2.5 gspeed#=1 speed#=gspeed ;Environment Dim env(12) ;oben/unten env(12)=CreateCube() ScaleEntity env(12),1,1,1 EntityColor env(12),0,0,255 EntityType env(12),WAND env(0)=CreateCube() ScaleEntity env(0),80,1,20 EntityColor env(0),0,0,255 PositionEntity env(0),0,-40,0 EntityType env(0),WAND EntityParent env(0),env(12) env(1)=CreateCube() ScaleEntity env(1),80,1,20 EntityColor env(1),0,0,255 PositionEntity env(1),0,40,0 EntityType env(1),WAND EntityParent env(1),env(12) ;links env(2)=CreateCube() ScaleEntity env(2),4,10,20 EntityColor env(2),0,0,255 PositionEntity env(2),-78,-31,0 EntityType env(2),WAND EntityParent env(2),env(12) env(3)=CreateCube() ScaleEntity env(3),4,10,20 EntityColor env(3),0,0,255 PositionEntity env(3),-78,31,0 EntityType env(3),WAND EntityParent env(3),env(12) ;rechts env(4)=CreateCube() ScaleEntity env(4),4,10,20 EntityColor env(4),0,0,255 PositionEntity env(4),78,-31,0 EntityType env(4),WAND EntityParent env(4),env(12) env(5)=CreateCube() ScaleEntity env(5),4,10,20 EntityColor env(5),0,0,255 PositionEntity env(5),78,31,0 EntityType env(5),WAND EntityParent env(5),env(12) ;mitte env(6)=CreateCube() ScaleEntity env(6),1,10,20 EntityColor env(6),0,0,255 PositionEntity env(6),0,-31,0 EntityType env(6),WAND EntityParent env(6),env(12) env(7)=CreateCube() ScaleEntity env(7),1,10,20 EntityColor env(7),0,0,255 PositionEntity env(7),0,31,0 EntityType env(7),WAND EntityParent env(7),env(12) ;Glas env(8)=CreateCube() ScaleEntity env(8),80,41,1 EntityColor env(8),0,0,140 EntityAlpha env(8),.3 PositionEntity env(8),0,0,-19 EntityType env(8),WAND EntityParent env(8),env(12) env(9)=CreateCube() ScaleEntity env(9),80,41,1 EntityColor env(9),0,0,140 EntityAlpha env(9),.3 PositionEntity env(9),0,0,19 EntityType env(9),WAND EntityParent env(9),env(12) ;Tor (Glas) env(10)=CreateCube() ScaleEntity env(10),1,21,20 EntityColor env(10),255,0,0 EntityAlpha env(10),.2 PositionEntity env(10),-80,0,0 EntityType env(10),TOR2 EntityParent env(10),env(12) env(11)=CreateCube() ScaleEntity env(11),1,21,20 EntityColor env(11),255,0,0 EntityAlpha env(11),.2 PositionEntity env(11),80,0,0 EntityType env(11),TOR1 EntityParent env(11),env(12) ;PLAYER! player1=CreateCube() ScaleEntity player1,1,7,4 EntityColor player1,255,0,255 EntityAlpha player1,.6 PositionEntity player1,-77,0,0 EntityType player1,PLAYER player2=CreateCube() ScaleEntity player2,1,7,4 EntityColor player2,255,0,0 EntityAlpha player2,.6 PositionEntity player2,77,0,0 EntityType player2,PLAYER ;Ball ball=CreateSphere() EntityType ball,2 ;Erster WInkel b_x_winkel=Rand(360) b_y_winkel=Rand(360) b_z_winkel=Rand(360) ;Kollision Collisions PLAYER,WAND,2,2 Collisions KUGEL,WAND,2,2 Collisions KUGEL,PLAYER,2,2 Collisions KUGEL,TOR2,2,2 Collisions KUGEL,TOR1,2,2 ;//////////////////////////////////////////Hauptschleife\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ While Not KeyDown(1) ;Player If KeyDown(200) Then MoveEntity player1,0,(gravity/10)+1,0 If KeyDown(208) Then MoveEntity player1,0,-1,0 If KeyDown(203) Then MoveEntity player1,0,0,+1 If KeyDown(205) Then MoveEntity player1,0,0,-1 If KeyDown(17) Then MoveEntity player2,0,(gravity/10)+1,0 If KeyDown(31) Then MoveEntity player2,0,-1,0 If KeyDown(30) Then MoveEntity player2,0,0,-1 If KeyDown(32) Then MoveEntity player2,0,0,+1 ;Drehung TurnEntity env(12),.05,0,0 TurnEntity player1,.05,0,0 TurnEntity player2,.05,0,0 ;Ball If EntityCollided(ball,3)<>0 Then b_x_winkel=(b_x_winkel*(-1)) Mod 360 b_y_winkel=(b_y_winkel*(-1)) Mod 360 b_z_winkel=(b_z_winkel*(-1)) Mod 360 If speed>.1 Then speed=speed-.001 ElseIf EntityCollided(ball,1)<>0 Then b_x_winkel=(b_x_winkel*(-1)) Mod 360 b_y_winkel=(b_y_winkel*(-1)) Mod 360 b_z_winkel=(b_z_winkel*(-1)) Mod 360 If speed>.001 Then speed=speed-.001 ElseIf EntityCollided(ball,4)<>0 Then p2_tor=p2_tor+1 PositionEntity ball,0,0,0 speed=gspeed ElseIf EntityCollided(ball,5)<>0 Then p1_tor=p1_tor+1 PositionEntity ball,0,0,0 speed=gspeed EndIf If b_x_winkel<0 Then b_x_winkel=b_x_winkel+360 If b_y_winkel<0 Then b_y_winkel=b_y_winkel+360 If b_z_winkel<0 Then b_z_winkel=b_z_winkel+360 MoveEntity ball,Sin(b_y_winkel)/speed,Cos(b_x_winkel)/speed,Tan(b_z_winkel)/speed ;Gravity PositionEntity player1,EntityX(player1),EntityY(player1)-(gravity/5),EntityZ(player1) PositionEntity player2,EntityX(player2),EntityY(player2)-(gravity/5),EntityZ(player2) UpdateWorld RenderWorld Text 0,0,p1_tor Text 0,14,p2_tor Flip Wend End ja ich weiss mit der Ball-Physik hab ichs noch nicht so aber das ist im moment erstmal egal ich will erstmal das die Kollision geht... ![]() |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
- Zuletzt bearbeitet von 5k41 am Di, Jan 31, 2006 13:59, insgesamt einmal bearbeitet
Beaner |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja ich denk mal das ist das alte Problem mit Kollisionen zwischen zwei sich bewegenden Objekten. Hier is mal nen Beispielcode der sich mit dem Problem befaßt http://www.blitzbasic.com/code...p?code=898 vielleicht hilfts dir ja | ||
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ohje...das is ja komplexer als ich dachte...scheiß collisions befehl ![]() |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich bin grad den code durchgeganen und da ist mir das hier aufgefallen:
http://www.blitzbasic.com/code...p?code=898 hat Folgendes geschrieben: Limitations:
Only works with spheres as source entities Only works if the source entity is colliding with one dynamic entity at once ich kann beides nicht gewährleisten...gibt es noch eine andere möglichkeit mit bewegenden objekten zu kollidieren?Kann doch nicht sein das das nicht funktioniert! ~Edit~ Ich hab grad einfach mal die Drehung der Umgebung ausgeschaltet und die spieler sind immer noch zur hälfte im boden versunken...woran kann das denn liegen? |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das der 0 Punkt der Figur nicht an ihren Füssen ist bzw. du die Figur nicht entsprechend anderst positionierst.
Kollisionen von dynamischen Objekten solltest du eigentlich als Kugelförmig garantieren können, denn etwas anderes ist leider nicht sonderlich schnell ... |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok das mit dem Nullpunkt seh ich ein aber wie bekomm ich den denn so hin das er mit der ganzen fläche kollidier? ich mein er sackt ja nach oben, unten, recht und links ein...muss man dann mit EntityBox arbeiten? Ich dachte das Collisions nicht nur eine kollision mit dem Nullpunkt macht sondern das selbst berechnet...
ne kugelförmige kollision soll mir von mir aus recht sein aber da steht mit Spheres as Entitys also mit kugeln generell oder soll ich dann einfach da nen alpha auf 0 setzten? das Problem das die Kollision mit mehr als einem Objekt funktionieren soll bleibt immer noch... ~Edit~ Oder ist mit Objekt Objekt-Typ gemeint? |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Problem gelöst! Ich hatte nur einene kleinen Denkfehler! Ich konnte genausogut die Camera drehen brauchte dann nur noch ein paar sin(cos formeln...vielen dank han Hectic! | ||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group