Probleme mit Kollision und Bewegung von Obj.
Übersicht

KaplanBetreff: Probleme mit Kollision und Bewegung von Obj. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Leute!
Ich hab da ein paar Probleme. Ich versuche gerade ein Ballspiel zu coden(Ball durch Dungeon etc.). Nur passieren ein paar mysteriöse Dinge...Ne spaß bei Seite. Ich Paste mal den Code und schreibe weiter unten, was mein Problem ist. Code: [AUSKLAPPEN] Graphics3D 640,480,24,2 SetBuffer BackBuffer() player=CreatePivot() cam = CreateCamera(player) ball = CreateSphere(5,player) boden = CreatePlane() cube=CreateCube() sun=CreateLight() RotateEntity sun,50,35,40 rot = LoadTexture("rot.bmp") grün = LoadTexture("grün.bmp") PositionEntity cube, 10,1,10 EntityTexture cube,grün XGes# = 0 ZGes# = 0 EntityType ball,1 EntityRadius ball,1 PositionEntity boden,0,-10,0 PositionEntity cam,0,10,-10 TurnEntity cam,20,0,0 PositionEntity ball,0,0,0 EntityTexture boden,rot EntityTexture ball,grün Repeat MoveEntity player,XGes,0,ZGes TurnEntity ball,ZGes,0,XGes If KeyDown(17) = 1 Then If ZGes# <= 0.5 Then ZGes# = ZGes# + 0.1 End If End If If KeyDown(31) = 1 Then If ZGes# >= -0.5 Then ZGes# = ZGes# - 0.1 End If End If If KeyDown(17) = 0 Then If ZGes# > 0 Then ZGes# = ZGes# - 0.1 End If End If If KeyDown(31) = 0 Then If ZGes# < 0 Then ZGes# = ZGes# + 0.1 End If End If If KeyDown(32) = 1 Then If XGes# <= 0.5 Then XGes# = XGes# + 0.1 End If End If If KeyDown(30) = 1 Then If XGes# >= 0.5 Then XGes# = XGes# - 0.1 End If End If If KeyDown(32) = 0 If XGes# > 0 Then XGes# = XGes# - 0.1 End If End If If KeyDown(30) = 0.0 Then If XGes# < 0 Then XGes# = XGes# + 0.1 End If End If Collisions 1,2,2,2 UpdateWorld RenderWorld Flip Until KeyHit(1) End Also mein erstes Problem: Das mit der Kollision funzt net o.O. Ich weiß, TOTAL FALSCH, aber ich schnall es durch die OH irrgendwie net o.O Kann es mir einer korrigieren, damit es der liebe Kaplan versteht? Wäre sehr nice(bin kein Copy/Past Typ). Mein zweites Problem: Lasst doch mal bitte das kleine Programmchen laufen. Wenn ihr jetzt W/D/S/A drückt, bewegt sich die kleine Sphere. Da sich die Kamera mitbewegt, ist da noch eine kleine Box, damit man weiß, ob sich die Sphere wirklich bewegt. Wenn wir jetzt aber A drücken, bewegt sich die Sphere langsamer als wenn wir W/D/S drücken. Ich hab schon ein wenig rumprobiert und...Keine Ahnung. Ich glaube aber es ist ein dummer Noob-Fehler. Hmm, ich denke das wars vorerst. Ich hoffe ihr versteht was ich meine. Das mit den Kollisionen versteh ich aber wirklich nicht...Irrgendwie EntityType einstellen, dann den EntityRadius. Bis hier hin versteh ich es noch. Aber das mit dem Collisions versteh ich null(ich habs mal aus einem Beispiel in der OH kopiert um damit rumzuexperementieren (<-- richtig geschrieben?), es hat aber garnicht geklappt, also war das rumexperementieren futsch.). Mit 2D ist es ja ziemlich einfach(ImagesCollide etc.). Hoffe ich könnt mir helfen. Mit freundlichen Grüßen, Kaplan. |
||
"Jedes Ereigniss hinterlässt eine Narbe in der Seele des Beteiligten. Manche sind größer als andere, manche aber teilen deine Seele in Zwei."
User posted image User posted image |
Castrapolis |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1. Damit die Kollision funktioniert musst du der Box auch einen Code: [AUSKLAPPEN] EntityType
zuweisen. 2. - Du hast bei der Abfrage der "a"-Taste ein - vor 0.5 vergessen. - Wenn du dir einmal mit Text XGes# und ZGes# anzeigen lässt, stellst du fest, dass beide nach einer Bewegung nicht mehr 0 werden, sondern 1.49012e-008. Um dass zu vermeiden würde ich zunächst mit Integern rechnen und dann Code: [AUSKLAPPEN] MoveEntity player,(XGes/10.0),0,(ZGes/10.0) schreiben.
So sollte es funktionieren: Code: [AUSKLAPPEN] Graphics3D 640,480,24,2
SetBuffer BackBuffer() player=CreatePivot() cam = CreateCamera(player) ball = CreateSphere(5,player) boden = CreatePlane() cube=CreateCube() sun=CreateLight() RotateEntity sun,50,35,40 rot = LoadTexture("rot.bmp") grün = LoadTexture("grün.bmp") PositionEntity cube, 10,1,10 EntityTexture cube,grün XGes = 0 ZGes = 0 EntityType cube,2 EntityType player,1 EntityRadius player,1 PositionEntity boden,0,-10,0 PositionEntity cam,0,10,-10 TurnEntity cam,20,0,0 PositionEntity ball,0,0,0 EntityTexture boden,rot EntityTexture ball,grün Repeat Cls MoveEntity player,(XGes/10.0),0,(ZGes/10.0) If EntityCollided(player,2)= 0 Then TurnEntity ball,ZGes,0,XGes; Damit sich ;der Ball bei einer Kollision nicht weiterdreht. If KeyDown(17) = 1 Then If ZGes <= 5 Then ZGes = ZGes + 1 End If End If If KeyDown(31) = 1 Then If ZGes >= -5 Then ZGes = ZGes - 1 End If End If If KeyDown(17) = 0 Then If ZGes > 0 Then ZGes = ZGes - 1 End If End If If KeyDown(31) = 0 Then If ZGes < 0 Then ZGes = ZGes +1 End If End If If KeyDown(32) = 1 Then If XGes <= 5 Then XGes = XGes + 1 End If End If If KeyDown(30) = 1 Then If XGes >= -5 Then XGes = XGes - 1 End If End If If KeyDown(32) = 0 If XGes > 0 Then XGes = XGes - 1 End If End If If KeyDown(30) = 0 Then If XGes < 0 Then XGes = XGes + 1 End If End If Collisions 1,2,2,2 UpdateWorld RenderWorld Text 10, 10, ZGes Text 10, 30, XGes Flip Until KeyHit(1) End Gruß Castrapolis |
||
Kaplan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Castrapolis hat Folgendes geschrieben: 1. Damit die Kollision funktioniert musst du der Box auch einen Code: [AUSKLAPPEN]
EntityType
zuweisen. Achso daran lags...Danke das merk ich mir. Castrapolis hat Folgendes geschrieben: 2. - Du hast bei der Abfrage der "a"-Taste ein - vor 0.5 vergessen. - Wenn du dir einmal mit Text XGes# und ZGes# anzeigen lässt, stellst du fest, dass beide nach einer Bewegung nicht mehr 0 werden, sondern 1.49012e-008. Um dass zu vermeiden würde ich zunächst mit Integern rechnen und dann Code: [AUSKLAPPEN] MoveEntity player,(XGes/10.0),0,(ZGes/10.0) schreiben.
Jap hab ich auch gesehn. Danke für die Hilfe! Es funzt jetzt(Hab mir deinen editierten Code auch mal angesehn. Glaube habe paar kleinigkeiten auch vergessen wie Cls...) Ich danke dir für deine Hilfe! Mit freundlichen Grüßen, Kaplan. |
||
"Jedes Ereigniss hinterlässt eine Narbe in der Seele des Beteiligten. Manche sind größer als andere, manche aber teilen deine Seele in Zwei."
User posted image User posted image |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group