Collision mit Terrain
Übersicht

DarkDragon-1993Betreff: Collision mit Terrain |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe eine Art Sternenhimmel erstellt, bei dem die riesigen Sterne vom Himmel herabgerast kommen sollen. Und zwar genau auf den Spieler. Die Sterne werden hierbei von Kugeln repräsentiert.
Hier nun das Problem: Später hinaus wollte ich bei Collisionen Explosionen einbauen, aber es klappt nicht, da die Sterne nie wirklich mit dem Terrain zusammenstoßen. Daher kann ich auch keine Explosionen einbauen. Code ist so zirka Code: [AUSKLAPPEN] Collisions type_star, type_terrain, 2, 2
... ;Hier was ausgelassen While Not KeyHit( 1 ) For s.star = New star If s\countdown <= 0 then MoveEntity s\star, 0, 0, 1 s\deathtime = s\deathtime - 0.01 Endif If EntityCollided( s\star_copy, type_terrain ) then s\deathtime = 120 s\countdown = s\startcountdown Endif If s\deathtime <= 0 then s\deathtime = 120 s\countdown = s\startcountdown Endif Next RenderWorld UpdateWorld Wend Das ist alles nur so grob. Die Sterne werden nach dem "Tod" wieder an ihre ursprüngliche Stellung gesetzt und so weiter. Hab hier vieles ausgelassen. Wenn ich den ganzen Code posten soll, werd ich ihn morgen posten. Danke schonmal im Vorraus, DarkDragon-1993 |
||
martin_moehlerBetreff: Frage verbessern |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
ich denke der Code den du gepostet hast müsste richtig sein, nur dein Problem ist nicht sehr genau beschrieben! Zitat: [...] da die Sterne nie wirklich mit dem Terrain zusammenstoßen.
Bedeutet das, dass sie schon vorher zurückgesetzt werden und gar nicht beim Terrain ankommen, oder das die Kollision nicht richtig abgefragt wird? |
||
![]() |
Der_Schläfer |
![]() Antworten mit Zitat ![]() |
---|---|---|
biete drei mögliche-fehler-fragen ![]() -hast du den sternen und dem terrain nen entitytype gegeben? -ist das terrain evtl. mit entityfx 16 versehen? (kollisionen funktionieren nämlich trotzdem nur in eine richtung) -bist du sicher dass keine kollision stattfindet und der code einfach nichts gescheites macht im falle einer kollision? aussserdem ist dein setup komisch weil: normalerweise benutzt "man" (ich) in b3d die y richtung als höhe (damit geladene terrains nicht erst noch gedreht werden müssn), ich würde die sterne dann mit moveentity 0,-1,0 runterklatschen lassen. und ja, mehr code bitte ^^ mfg |
||
DarkDragon-1993 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Der_Schläfer hat Folgendes geschrieben: biete drei mögliche-fehler-fragen
![]() -hast du den sternen und dem terrain nen entitytype gegeben? -ist das terrain evtl. mit entityfx 16 versehen? (kollisionen funktionieren nämlich trotzdem nur in eine richtung) -bist du sicher dass keine kollision stattfindet und der code einfach nichts gescheites macht im falle einer kollision? aussserdem ist dein setup komisch weil: normalerweise benutzt "man" (ich) in b3d die y richtung als höhe (damit geladene terrains nicht erst noch gedreht werden müssn), ich würde die sterne dann mit moveentity 0,-1,0 runterklatschen lassen. und ja, mehr code bitte ^^ mfg 1. Beides ja 2. Nein 3. ich hab noch ein WireFrame wf eingebaut und hab dadurch gesehen, dass die "Sterne" durch den Boden durchgehen, und den Deathtimer abwarten, ohne bei der Collision zurückgesetzt zu werden. Code: [AUSKLAPPEN] Graphics3D 800, 600, 16, 2
SetBuffer BackBuffer( ) ; -------------------------------------- ; Types ; -------------------------------------- Type star Field parent% Field entity% Field countdown# Field startcountdown = 120# Field deathtime# Field x# Field y# Field z# End Type Type cam Field pivot% Field camera% Field x# Field y# Field z# End Type ; -------------------------------------- ; Kollisionen ; -------------------------------------- Global Type_Camera = 1, Type_Terrain = 2, Type_Scenery = 3, Type_Star = 9 ; -------------------------------------- ; Terrain ; -------------------------------------- Global terrain = CreateTerrain( 256 ) EntityType terrain, Type_terrain ; -------------------------------------- ; MainLoop ; -------------------------------------- camera1 = CreateCam( ) PlaceStars( camera1 ) While Not KeyHit( 1 ) UpdateCamera( ) UpdateStars( camera1 ) UpdateWorld RenderWorld Flip Cls Wend ; -------------------------------------- ; Funktionen ; -------------------------------------- Function CreateCam.cam( ) c.cam = New cam c\pivot = CreatePivot( ) c\camera = CreateCamera( c\pivot ) Return c End Function Function UpdateCamera( ) For c.cam = Each cam If KeyDown( 17 ) Then MoveEntity c\pivot, 0, 0, 0.1 If KeyDown( 31 ) Then MoveEnttiy c\pivot, 0, 0, -0.1 TurnEntity c\pivot, -MouseXSpeed( ), 0, 0 TurnEntity c\camera, 0, -MousseYSpeed( ), 0 Next End Function Function PlaceStars.star( c.cam ) For i = 0 To 499 s.star = New star s\parent = CreatePivot( ) s\entity = CreateSphere( s\parent ) EntityType s\star, Type_Star PositionEntity s\entity, Rnd( 50, 100 ), Rnd( 50, 100 ), Rnd( 50, 100 ) startcountdown = startcountdown + 120 Next Return s End Function Function UpdateStars.star( c.cam, terrain ) For s.star = Each star PointEntity s\star, c\camera If EntityCollided( Type_Star, terrain ) then deathtime = 0 endif If countdown <= 0 then deathtime = deathtime - 0.1 MoveEntity s\star, 0, 0, 1 Else countdown = countdown - 0.1 Endif If deathtime <= 0 then countdown = startcountdown deathtime = 120 PositionEntity s\star, EntityX#( s\parent ), EntityY#( s\parent ), EntityZ#( s\parent ) Endif End Function So, jetzt dürfts der Code sein. mfG DarkDragon-1993 Edit: Oh, sorry, ich war unter Zeitdruck. ^^ Jetzt dürfts aber stimmen ![]() |
||
- Zuletzt bearbeitet von DarkDragon-1993 am Fr, Dez 05, 2008 15:34, insgesamt einmal bearbeitet
![]() |
Der_Schläfer |
![]() Antworten mit Zitat ![]() |
---|---|---|
sorry aber ich kapiers nicht... die UpdateStars funktion ist nicht komplett da und wie fügt man den alten mit dem neuen code zusammen? | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group