Gravitation & PositionEntity [GELÖST]

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

N0X

Betreff: Gravitation & PositionEntity [GELÖST]

BeitragSa, Jul 17, 2010 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey!
Ich habe ein Problem mit meiner Gravitation. Rolling Eyes
Nein, ich kann nicht fliegen, schön wärs. Cool
Aber in meinem Spiel habe ich das Problem, dass ich bei einer Bewegung aufwärts der Y-Achse meine Kamera nicht mitbewegt, abwärts aber schon.
Die Kamera ist an einem Pivot angeheftet der wiederum im Programm immer auf Player-Koordinaten gehalten wird. (PositionEntity...)
Warum bewegt sich meine Kamera also nicht mit aufwärts?

Code: [AUSKLAPPEN]
Const PLY=1,MAP=2

Global piv    = CreatePivot()
Global cam    = CreateCamera(piv):PositionEntity cam,0,10,-50
Global player = LoadMesh("models\dwarf1.b3d"):EntityType(player,PLY)
Global karte  = LoadMesh("beispielMap.3ds"):EntityType(karte,MAP)

Collisions PLY,MAP,2,3
While Not KeyHit(1)
   If Not EntityCollided(player,MAP) Then
      transY#=transY#*1.1
      playerY# = playerY#-transY#
   Else
      transY#=0.1
   EndIf
   
   move()
   
   PositionEntity player,px#,playerY#,pz#
   UpdateWorld()
   RenderWorld()
Wend
End

Function move()
   PositionEntity piv,EntityX(player),EntityY(player),EntityZ(player)
   
   If KeyDown(17) Then pz# = pz#+1.0
   If KeyDown(31) Then pz# = pz#-1.0
   If KeyDown(32) Then px# = px#+1.0
   If KeyDown(30) Then px# = px#-1.0
End Function


Mfg,
N0X

//EDIT:
So, die Reihenfolge ein wenig geändert und schon klappts. Seltsam...
Naja, gelöst!

Code: [AUSKLAPPEN]
Const PLY=1,MAP=2

Global piv    = CreatePivot()
Global cam    = CreateCamera(piv):PositionEntity cam,0,10,-50
Global player = LoadMesh("models\dwarf1.b3d"):EntityType(player,PLY)
Global karte  = LoadMesh("beispielMap.3ds"):EntityType(karte,MAP)

Collisions PLY,MAP,2,3
While Not KeyHit(1)
   If Not EntityCollided(player,MAP) Then
      transY#=transY#*1.1
      playerY# = playerY#-transY#
   Else
      transY#=0.1
   EndIf
   
   PositionEntity piv,EntityX(player),EntityY(player),EntityZ(player)
   PositionEntity player,px#,playerY#,pz#
   
   move()
   
   UpdateWorld()
   RenderWorld()
Wend
End

Function move()   
   If KeyDown(17) Then pz# = pz#+1.0
   If KeyDown(31) Then pz# = pz#-1.0
   If KeyDown(32) Then px# = px#+1.0
   If KeyDown(30) Then px# = px#-1.0
End Function
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%
 

Blitzjockey

BeitragSa, Jul 17, 2010 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch wenn Dein Problem schon gelöst ist (und dass ist ja das Wichtigste!)
Wozu benutzt Du dann den Pivot? Wenn Du sowieso den Pivot immer auf den Position des Player steckst, reicht es auch wenn Du den Camera nach Dein "Player" initialisierst, und dabei "Player" als Parent angibst? Dann würde das ganze gleich funktionieren?

Anschliessend brauchst Du Dich um den Camera gar nicht mehr zu kümmern, der hängt dann immer an Dein Zwerg dran.

Es sei denn, Du möchtest den Pivot auch zum rotieren um Dein Zwerg benutzen, das geht aber aus diesem Ausschnitt nicht hervor.

N0X

BeitragSa, Jul 17, 2010 22:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Jap, das ist es, die Camera wird im "Original-Code" mit der rechten Maustaste auch um den Player gedreht. (Dazu der Pivot.)
Habe eben alles Unnötige hier weggelassen...

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group