racing game - fahrzeug collision mit hauswand
Übersicht

![]() |
AmyS3Betreff: racing game - fahrzeug collision mit hauswand |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo erstmal,
ich fange den thread mal so an wie jeder andere neuling ![]() ich hab da ein problem..... XD wie der titel schon sagt, hab ich son paar probleme wenn es um die collision zwischem einem fahrzeug (in diesem fall der player) und einer hauswand(oder aehnliches) geht. kurze vorabinfo: ich nehme hier die driver demo/sample von mak als beispiel, mit einem .3ds modell einer stadt anstelle des normalen terrains/ heightmap und einem .3ds modell fuer das fahrzeug statt dem car.x wenn ich also mit dem fahrzeug gegen eine wand fahre dann taucht es erstmal fast bis zur haelfte in die wand ein und slided dann erst mehr schlecht als recht an ihr entlang. zudem scheint die collision sich eher nach den wheels zu richten statt dem fahrzeug selbst. in den collisions abschnitt steht aber das fahrzeug korrekt drinn. ich habe als workaround nun 12 spheren rund um das fahrzeug positioniert, mit etwas abstand zum boden da der ja auch wie eine wand wirkt, und in den collisions mit eingetragen. das geht einigermassen aber ist nicht wirklich das gelbe vom ei. hier mal die collisions definitionen(bumper sind die 12 spheren): Code: [AUSKLAPPEN] Collisions BUMPER,SCENE,2,3
Collisions BODY,BUMPER,2,3 Collisions BODY,SCENE,2,3 Collisions WHEEL,SCENE,2,3 kann mir irgendwer ein wenig nachhelfen? stehe irgendwie voll aufm schlauch. und ja ich hab die forensuche schon betaetigt und auch onkel google habsch angequatscht... p.s.: meine englische tastertur hat keine umlaute... sry - und ja ich gebs zu ich bin nen b3d noob.. aber alle haben mal klein angefangen... vielen dank im vorraus. hier mal der ganze source als download virengeprueft und lauffaehig mit b3d. ist meiner meinung nach ziemlich gut kommentiert und aufgeraumt. www.amys3.de/b3d/driver_edited.rar |
||
Aktuelles Projekt:
Bullet Racer Racing Game / Ego-Shooter Fortschritt: ca. 11% |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also dein Kollisionskonzept ist nicht so ganz ausgereift; Dadurch, dass die Gravitation immer auf das Fahrzeug wirkt, gibt es auch immer eine Kollision mit dem Levelmesh, so kannst Du nicht richtig Kollisionen abfragen. Du könntest z.B. mit den Kollisionsnormalen (CollisionNX![]() ![]() Das Fahrzeug selbst fährt zur hälfte in die Wand rein, weil die Bumper zwar Kollidieren, aber das Fahrzeug weiterfährt (speed# müsste dann ja auf <= 0.0 gesetzt werden), denn die Bumpers sind nur Children. Das Fahrzeug selbst müsste soweit ich das beurteilen kann den Radius 1.0 haben. |
||
Starfare: Worklog, Website (download) |
![]() |
AmyS3 |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke fuer deine antwort, aber ich bin noch ned so firm mit b3d was das linepick und so betrifft.
zudem der speed soll ruhig bleiben und an der wand entlang sliden ist auch ok. p.s: die bumper bleiben trotz gravity immer ueber dem boden da sie staendig zurueckgesetzt werden ich hab mal das hier testweise zusammengeschustert und versuche es mit entitycollidet... funzt auch irgendwie, aber ist zu ruckelig und das teil bleibt manchmal an der wand kleben und/oder beschleunigt einfach in eine x-beliebige richtung.. o_0 den code hier kann man einfach per copy paste in b3d einfuegen und starten. waehre toll wenn du(bzw jeder) dir das mal anguggen koenntest und nen tip geben kannst was man besser machen kann. edit: weiss ned ob ich mein problem wirklich richtig beschrieben habe... vill. hat schon jemand geguggt mit ner simplen loesung aber das problem nicht erkannt ![]() also: ich versuche zu erreichen das das playermodell ned in einer wand eintaucht, und wen es schraeg an eine wand faehrt sich das model dreht und dann hoechstens mit der seite an der wand entlangslided... wenn man frontal an die wand klatscht sollte das model schon stehenbleiben. aber so 100%ig frontal kann keiner an ne wand fahren. es gibt immer eine abweichung.. waehre super wenn man da irgendwie nen margin einberechnen koennte nach dem motto: wenn abweichung Xgrad von frontal dann drehen und geschwindigkeit beibehalten/verlangsamen oder speed=0 Code: [AUSKLAPPEN] ;name for the app
AppTitle "bumpertest" ;load graphic mode Graphics3D 800,600,32,2 SetBuffer BackBuffer() ;globals Global speed#=0 Const GRAVITY#=-.3 Const force#=.97 Const BODY=1,BUMPER=2,SCENE=10 ;collisions Collisions BODY,SCENE,2,3 Collisions BUMPER,SCENE,2,2 ;load world world=CreatePlane() ScaleEntity world,100,1,100 PositionEntity world,0,0,0 EntityType world,SCENE EntityColor world,123,123,123 ;create hurdle hurdle=CreateCube() FitMesh hurdle,-20,-15,-30,80,30,60 PositionEntity hurdle,40,0,40 EntityType hurdle,SCENE EntityColor hurdle,123,223,123 ;create player player=CreateCube() FitMesh player,-2,-0.5,-4,4,1,8 PositionEntity player,10,10,10 EntityType player,BODY ;make bumpers bumperfl=CreateSphere(8,player) EntityType bumperfl,BUMPER bumperbl=CreateSphere(8,player) EntityType bumperbl,BUMPER bumperfr=CreateSphere(8,player) EntityType bumperfr,BUMPER bumperbr=CreateSphere(8,player) EntityType bumperbr,BUMPER ;cam and light light=CreateLight() TurnEntity light,45,45,0 camera=CreateCamera(player) CameraClsColor camera,0,128,255 PositionEntity camera,0,5,-15 ;start the mainloop While Not KeyHit(1) ;position and reposition the bumpers PositionEntity bumperfl,-2,1,4 PositionEntity bumperbl,-2,1,-4 PositionEntity bumperfr,2,1,4 PositionEntity bumperbr,2,1,-4 ;check for bumper collision If EntityCollided( bumperfl,SCENE ) Then TurnEntity player,0,-3,0 TranslateEntity player,0.3,GRAVITY,0 EndIf If EntityCollided( bumperbl,SCENE ) Then TurnEntity player,0,3,0 TranslateEntity player,0.3,GRAVITY,0 EndIf If EntityCollided( bumperfr,SCENE ) Then TurnEntity player,0,3,0 TranslateEntity player,-0.3,GRAVITY,0 EndIf If EntityCollided( bumperbr,SCENE ) Then TurnEntity player,0,-3,0 TranslateEntity player,-0.3,GRAVITY,0 EndIf ;move the player If KeyDown(203) TurnEntity player,0,3,0 If KeyDown(205) TurnEntity player,0,-3,0 If KeyDown(200) speed=speed+.02 If speed>2.7 speed=2.7 Else If KeyDown(208) speed=speed-.02 If speed<-1.5 speed=-1.5 Else speed=speed*force EndIf MoveEntity player,0,GRAVITY,speed TranslateEntity player,0,GRAVITY,0 UpdateWorld RenderWorld Flip() Wend End |
||
Aktuelles Projekt:
Bullet Racer Racing Game / Ego-Shooter Fortschritt: ca. 11% |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn Du die Zeile BlitzBasic: [AUSKLAPPEN] EntityRadius player,MeshWidth(player),MeshHeight(player)hinzufügst, läuft es eigentlich ziemlich gut. Dadurch fährt das Fahrzeug nicht mehr in die Wand, weil der Kollisionsradius vergrößert wird. Die beschriebenen Aufprallwinkel kriegt man wohl am besten mit CollisionNX ![]() |
||
Starfare: Worklog, Website (download) |
![]() |
AmyS3 |
![]() Antworten mit Zitat ![]() |
---|---|---|
dank dank dank!!!!
habs grade getestet, und funzt wirklich gut. aller herzlichsten dank! den befehl kannte ich noch ned. aber naja bin ja noch in den kinderschuhen ![]() villeicht sollte mann nen kleines tut dafuer machen mit nem sauber kommentierten sample code damit jeder der grade erst angefangen hat es schnell und einfach kapiert. so ein befehl ist gold wert!!! nochmals danke edit: ich hab grad gesehen das den befehl schon verwendet hab, aber hab ned so wirklich gewust was ich da tu ![]() |
||
Aktuelles Projekt:
Bullet Racer Racing Game / Ego-Shooter Fortschritt: ca. 11% |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du solltest einfach die Hilfe nach Kategorien geordnet durchstöbern: Hier steht z.B. alles, was es zu Kollisionen zu wissen gibt ![]() |
||
Starfare: Worklog, Website (download) |
![]() |
AmyS3 |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() werde ich mich auf jedenfall mit beschaeftigen, da ich noch mehr mit collisionen machen muss... z.b.: der player soll weggeschoben werden wenn er von einem anderen objekt/player/bot getroffen wird. natuerlich in die entgegengesetzte richtung des aufpralls ![]() aber dein tip mit dem entityradius hat mir schonmal seht weitergeholfen. ich wusste ned das ich den so anwenden kann. nun muss ich aber die raeder ander positionieren damit mein player model auch smooth ne rampe hochfahren kann statt erstmal anzuecken ![]() so ich mach mich dann mal in die heia.. hab nachtschicht :/ cya |
||
Aktuelles Projekt:
Bullet Racer Racing Game / Ego-Shooter Fortschritt: ca. 11% |
![]() |
AmyS3 |
![]() Antworten mit Zitat ![]() |
---|---|---|
also ich hab das jetzt mal etwas genauer angeguggt (ne nich die linpick ect sachen... aber die auch...)
und musste feststellen das das mit dem entityradius im player modell ned funzt, da das model wenn es auf einer schraegen steht an einer horizontalen wand hochklettert wenn man die trifft... und da ich die entitycollided funktion schon so ausgiebig benutzt habe, dachte ich mir: "ok wenn es mit 12 spheren um das model herum ned richtig will, dann eben mit 12 spheren und 4 cubes ![]() sprachs und hab die spheren mal besser angeordnet und noch die cubes dazugewuerfelt. den entityradius tip vom zap hab ich natuerlich mit eingebaut und bin mit dem endergebnis soweit erstmal zufrieden. das model kann entsprechend flache schraegen hochfahren aber keine waende. soweit schonmal supi! aber da muss noch an der feinarbeit gefeilt werden, denn es ruckelt manchmal doch ganz schoen arg... und ruckeln soll ned sein. villeicht hat ja jemand ne bessere idee oder gar loesung die er/sie mir auf noobisch erzahlt damit ichs auch kapiere ![]() oder nen verbesserungsvorschlag anhand des code. mit nem beispiel waehre goettlich, ist aber nicht pflicht ![]() und eigentlich muss es doch das schon geben, oder muss ich das rad neuerfinden.. (ok ich weiss.. super training, ist aber doch nervig...) ich poste an dieser stelle mal den aktuellen code und die dazugehoerige .x datei fuers terrain. (ned lachen die .x datei ist in 10 minuten entstanden und dient nur zum test.. aber wer will kann sie gerne geschenkt haben XD) www.amys3.de/b3d/testground.x die .x datei ist 157kb nur so als info.. vor dem code noch schnell nen screenshot ![]() hier der code BlitzBasic: [AUSKLAPPEN] ;name for the app |
||
Aktuelles Projekt:
Bullet Racer Racing Game / Ego-Shooter Fortschritt: ca. 11% |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group