Fortbewegung auf hügeligem Terrain

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Muck

Betreff: Fortbewegung auf hügeligem Terrain

BeitragSa, Feb 19, 2011 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

warum bleibt die Spielfigur hier im Hügel des Terrains hängen und wie kriege ich es hin, dass sie stattdessen drüber läuft?

Code: [AUSKLAPPEN]
Graphics3D 800, 600, 32, 2
SetBuffer BackBuffer()

light = CreateLight()
RotateEntity light, 90, 0, 0
terrain = CreateTerrain(16)
grass_tex = LoadTexture("blitztexture.bmp")
EntityTexture terrain, grass_tex
ModifyTerrain terrain, 8, 8, 0.05
ModifyTerrain terrain, 8, 9, 0.05
ModifyTerrain terrain, 8, 10, 0.05
ScaleEntity terrain, 1, 10, 1

PositionEntity terrain,0,0,0



Global man=LoadMD2( "gargoyle.md2")
ScaleEntity man, 0.01, 0.01, 0.01
PositionEntity man,0,0,0

Global camera = CreateCamera()
PositionEntity camera,0,1,-1.5

EntityType man, 1
EntityType terrain, 2

Collisions 1,2,2,2 ; Kollisionstypen, Prüfungsart, Reaktion



   While Not KeyHit(1)
      
      
      If KeyDown(203) = 1 Then ; nach links
         
         TurnEntity man, 0, 1, 0
         TurnEntity camera, 0, 1, 0
         MoveEntity camera, +0.03, 0, 0
         
      ElseIf KeyDown(205) = 1 Then ; nach rechts
         
         TurnEntity man, 0, -1, 0
         TurnEntity camera, 0, -1, 0
         MoveEntity camera, -0.03, 0, 0
         
      ElseIf KeyDown(200) = 1 Then ; nach oben
         
         MoveEntity man, 0, 0, 0.1
         MoveEntity camera, 0, 0, 0.1
         
      EndIf
      
      
   
      UpdateWorld
      RenderWorld
      
      
      Flip
   
   Wend
   
End
 

Omenaton_2

BeitragSo, Feb 20, 2011 11:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß nicht, aber du solltest die Figur nicht auf Höhe Null erschaffen, sondern etwas darüber.
Bei einer 3D Landschaft bei der man nicht exakt weiß in welcher Höhe der Boden an welcher beliebieger Stelle gerade hat, läßt man die Figuren von weit oben beim Erschaffen (noch bevor es für den Spieler sichtbar gezeichnet wird) per Gravitationsvariable (einfach immer kontinueirlich versuchen die Figur minimal nach unten zu schieben) herunterfallen.

Diese ElseIF Kontstruktionen sehen nicht so hübsch aus. Da könntest du einfach getrennte If Then / EndIf nehmen und es sollte lieber "nach Vorne" und nicht "nach Oben" heißen.

ZaP

BeitragSo, Feb 20, 2011 12:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Evtl. wäre es hierbei auch sinnig, ganz auf Kollisionen zu verzichten, und stattdessen lieber TerrainY in Verbindung mit TranslateEntity zu nehmen.
Starfare: Worklog, Website (download)
 

Muck

BeitragMo, Feb 21, 2011 12:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, ich habe folgendes eingebaut:

Code: [AUSKLAPPEN]
PositionEntity man, EntityX#(man), TerrainY# (Terrain, EntityX#(man), EntityY#(man), EntityZ#(man)), EntityZ#(man)


Nun klettert er zwar auf den Hügel, aber wenn man ihn dort dreht, steckt das eine Bein im Boden fest... Auch nicht so schön.
 

Omenaton_2

BeitragMo, Feb 21, 2011 22:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit dem in den Boden reinstecken ist durchaus normal und haben andere Spiele auch. Das zu verhindern wäre sehr aufwendig, dazu müßten die Füße als extra Objekte wie echte Füße sich drehen lassen um sich an den Winkel anpassen zu können.
 

Pablo Borsellino

BeitragMi, Feb 23, 2011 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit den Füßen ist bei vielen Spielen, selbst in allen Grand theft Auto reihen ist es vorhanden. Vermeiden dieses Problemes würde dich viel zu viel Zeit kosten, lohnt sich nicht wirklich da es nur ein Optikfehler ist. Falls du diese Zeit aber in Kauf nehmen möchtest, musst du die füße (+ evtl. Beine) als einzenlnde Objekte machen damit sie sich der Steigung des Hügels/Berges anpassen können und es realistischer aussieht.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group