Ball Physik / seltsames Kollisionsverhalten
Übersicht BlitzBasic Blitz3D
GastBetreff: Ball Physik / seltsames Kollisionsverhalten |
Do, Jan 29, 2004 17:26 Antworten mit Zitat |
|
---|---|---|
Hallo erstmal!
Ich probiere seit einigen Tagen mit Blitz3D etwas einfache Ballphysik zu erstellen. Allerdings bin ich dabei auf ein seltsames Problem gestoßen. Die folgenden Codezeilen sollen den Ball in einem angegebenen Winkel und mit einer angegebenen Geschwindigkeit steigen lassen. Gleichzeitig wirkt aber auf die Geschwindigkeitskomponente der Y-Achse die festgelegte Gravitation ein, so dass yvel ins negative fällt und der Ball wieder "runterkommt". Dies tut er auch, aber nur insofern sämtliche Kollisionsangaben herausgenommen wurden. Andernfalls fällt der Ball bis zur Oberfläche des Kollisionsobjektes und fängt dann unverständlicherweise trotz negativer Y-Geschwindigkeit einen Steigflug an. Und das seltsame dabei ist, dass es gar nicht um den "Collisions"-Befehl geht, sondern das Problem tritt auf, sobald einer Entity der Entitytype zugewiesen wurde. Code: [AUSKLAPPEN] Const col_level = 1 Const col_ball = 2 Type throwedthing Field entity Field x#,y#,z# Field xvel#,yvel#,zvel# Field angle# Field speed# End Type Const GRAVITY# = 0.004 Global ball.throwedthing = New throwedthing angle$ = Input("Angle :") speed$ = Input("Speed :") ball\angle = Float(angle$) ball\speed = Float(speed$) Graphics3D 1024, 768 cam = CreateCamera () CameraViewport cam, 0, 0, GraphicsWidth (), GraphicsHeight () MoveEntity cam,0,5,-45 light1 = CreateLight(1) MoveEntity light1,0,15,-20 plane = CreatePlane() EntityColor plane,255,255,0 EntityAlpha plane,0.5 mirror = CreateMirror() EntityColor plane,255,100,100 EntityType plane,col_level EntityType mirror,col_level ball\entity = CreateSphere(6) RotateEntity ball\entity,ball\angle,0,0 MoveEntity ball\entity,0,1,0 EntityRadius ball\entity,1 EntityType ball\entity,col_ball ;Collisions col_ball,col_level,2,2 ball\xvel = (Cos (EntityPitch(ball\entity))) * ball\speed ball\yvel = (Sin (EntityPitch(ball\entity))) * ball\speed Repeat ball\yvel = ball\yvel - GRAVITY TranslateEntity ball\entity,ball\xvel,ball\yvel,ball\zvel UpdateWorld RenderWorld Text 10,10,"XVEL "+ball\xvel Text 10,30,"YVEL "+ball\yvel Text 10,50,"ZVEL "+ball\zvel Flip Until KeyHit (1) End Man bemerke das auskommentiere Collisions bei diesem Codeschnipsel. Wäre prima wenn das mal jemand erklären/bestätigen könnte. EDIT: Also abgesehen davon, dass im obigen Code Fehler waren, scheint dieses Problem nur aufzutreten wenn 2 Entitys kollidieren für die keine Kollisionsabfrage "Collisions" eingetragen wurde, die aber trotzdem einen EntityType besitzen. Warum dann allerdings in dieseem Progrämmchen der Ball nach Oben abhaut, ist mir noch immer unbegreiflich. |
||
Markus2 |
Fr, Jan 30, 2004 13:39 Antworten mit Zitat |
|
---|---|---|
Kann das sein das du dort Z benutzen solltest ?
ball\zvel = (Sin (EntityPitch(ball\entity))) * ball\speed |
||
Gast |
Sa, Jan 31, 2004 12:14 Antworten mit Zitat |
|
---|---|---|
Ne, das ist schon richtig so gemeint. Der Ball soll nur nach rechts und nach oben/unten fliegen (vorerst). | ||
Übersicht BlitzBasic Blitz3D
Powered by phpBB © 2001 - 2006, phpBB Group