Kollision mit Bande

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Roggi

Betreff: Kollision mit Bande

BeitragSo, Jan 08, 2006 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich arbeite zurzeit an einem Hallenfußballspiel! So eine Ballphysik habe ich, jetzt brauche ich eine Bande wo der Ball gegenspringen kann und zurückprallt. Ich hab es so gemacht das er kollision anzeigen soll wenn es kollidiert und er soll zurückprallen. Aber es funzt einfach net hier ist der Code:

Code: [AUSKLAPPEN]
Graphics3D 640,480,32,2
SeedRnd MilliSecs()
WireFrame 0

camera=CreateCamera()
RotateEntity camera,0,-45,0
PositionEntity camera,0,1,0

light = CreateLight (1)
RotateEntity light,90,0,0
PositionEntity light,0,10,10

terrain=CreateTerrain(128)

tex=LoadTexture("tex.bmp")
SetBuffer TextureBuffer(tex)

EntityTexture terrain,tex

x# = 5
y# = 5
z# = 15
sphere1= CreateSphere(32)
RotateEntity sphere1,0,-45,0
PositionEntity  sphere1,x#,y#,z#
EntityType sphere1,1
EntityColor sphere1,255,0,0

cube=CreateCube()
PositionEntity cube,30,1,70
EntityType cube,2


cube2=CreateCube()
ScaleEntity cube2,30,50,1
PositionEntity cube2,50,50,50
EntityType cube2,3

xs# = -.0
ys# = 0   
zs# = .1
slow_down_x#=.05
slow_down_y#=.1
slow_down_z#=.05
collision=0

SetBuffer BackBuffer()

While  Not  KeyHit (1)

   ys# = ys# - .005

   If y# < 1 Then
      y# = 1
      ys# = -ys# * .8 - .02
   EndIf   
   
   y# = y# + ys#
   x# = x# + xs#
   z# = z# + zs#
   zs# = zs# * .99
   xs# = xs# * .99
   If zs# < .0001 Then
      zs# = 0
   EndIf
   If xs# < .0001 Then
      xs# = 0
   EndIf
   
   If MouseHit(1) Then
      ys# = .4
      xs# = Rnd(.9,.2)
      zs# = Rnd(0.9,0.1)
   EndIf
   
   If KeyHit(31)Then
   ys#=.0
   xs#=Rnd(.9,.2)
   zs#=Rnd(0.9,0.1)
   EndIf
      
   PositionEntity sphere1,x#,y#,z#
   
   UpdateWorld

     RenderWorld    
 
   Collision=EntityCollided(sphere1,3)

   Text 0,14,EntityCollided(sphere1,3)

   If collision>0 Then
   
      xs=xs*(-1)-slow_down_x
      
      ys=ys*(-1)-slow_down_y
         
      zs=zs*(-1)-slow_down_z
      
      Text 0,0,"KOLLISION!":WaitKey()
         
   EndIf

   Flip
   
   Cls
Wend
End


Bitte helft mir!
 

#Reaper

Newsposter

BeitragSo, Jan 08, 2006 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast vergessen die Kollisionen zu setzen:

Setz mal das:
Collisions 1,2,2,2
Collisions 1,3,2,2

Vor Setbuffer Backbuffer() ein.
Allerdings geht deine Ballphysik noch nicht richtig, der Ball bleibt kleben Wink
Du musst den Abprallwinkel berechnen lassen, damit das richtig geht Wink
Wie das nun genu geht, weiß ich nun selber nicht so genau Embarassed
Hier im Forum hatte mal jemand einen Code gepostet, welcher anhand der Vertices den Winkel des Triangles und den Abprallwinkel des Balles berechnete.
Hab ihn selber nicht mehr gefunden, vielleicht findest du ihn ja Wink Smile
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

5k41

BeitragSo, Jan 08, 2006 13:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Der abprallwinkel wird doch berechnet!
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

#Reaper

Newsposter

BeitragMo, Jan 09, 2006 18:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, aber irgendwie geht es nicht, zu mindestens nicht bei mir Sad
Vielleicht habe ich doch was falsch gemacht Sad
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

5k41

BeitragMo, Jan 09, 2006 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab auch keine Ahnung...ich hatte das ja mit 0ahnung im vorraus besprochen und dann haben wir entschieden es ins forum zu stellen (nach einer halbe stunde die suche benutzen) weil wir beide ratlos waren...
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

#Reaper

Newsposter

BeitragMo, Jan 09, 2006 19:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach, doch, es geht, wenn ihr folgende Zeile auskommentiert:
Text 0,0,"KOLLISION!":WaitKey()

sonst hatte der immer halt gewartet, und es sah aus, als würde er Hängen bleiben^^

Edit: geht nun zwar schon, aber nicht richtig, der Ball fällt dann einfach gerade nach unten, das müsst ihr regeln Wink
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

5k41

BeitragDi, Jan 10, 2006 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
das war absicht wils bei mir NICH funktionierte und ich wollte nur sehen das er hängen bleibt, was bei mir nie der fall war!
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group