Wieder einmal Bewegungsproblem

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Honesch

Betreff: Wieder einmal Bewegungsproblem

BeitragSo, Jan 13, 2008 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
hey...ich habe wieder einmal, wie schon so viele ein Bewegungsproblem, und zwar: Wenn ich rauf schaue und mich vorwärtsbewege, "fliege" ich in die Luft. Ist mir auch klar warum....aber ich habe keine Lösung dafür. Hier einmal der Code: Code: [AUSKLAPPEN]

Graphics3D 1024,768,32,2

SetBuffer BackBuffer()

;Camera
body=LoadMesh("body.b3d")
player=CreatePivot(body)
camera=CreateCamera(player)
PositionEntity player,5,1,5
EntityType player,1
EntityRadius player,0.2
CameraRange camera,0.00001,500


;Terrain
terrain=LoadTerrain("heightmap_minigame.jpg")
PositionEntity terrain,0,-1,0
ter_tex=LoadTexture("wasser.bmp")
EntityTexture terrain,ter_tex
EntityType terrain,2

;Waffe
waffe=LoadMesh("waffe.x")
EntityParent waffe,player
PositionEntity waffe,0.1,-0.08,0.1
ScaleEntity waffe,.005,.005,.005
TurnEntity waffe,0,90,0
waffe_tex=LoadTexture("sky_BK.jpg")
EntityTexture waffe,waffe_tex

;Haus
haus=LoadMesh("haus.b3d")
PositionEntity haus,5,-1,5
ScaleEntity haus,.1,.1,.1
haus_tex=LoadTexture("sky_RT.jpg")
EntityTexture haus,haus_tex
EntityType haus,2

;Collisions
Collisions 1,2,2,2

sp#=.02
ey#=EntityY(player)

;2D-Images
kreuz = LoadImage("Fadenkreuz.bmp")
MaskImage kreuz,255,255,255
status=LoadImage("status.jpg")
MaskImage status,255,255,255

;******* Hauptschleife ********

While Not KeyHit(1)

HidePointer

yv#=EntityY(player)-ey
ey=EntityY(player)

If KeyHit(57) yv=.1

TranslateEntity player,0,yv-.005,0

RotateEntity player,EntityPitch(player)+MouseYSpeed()/1.5,EntityYaw(player)-MouseXSpeed()/1.5,0

MoveMouse 500,500

If KeyDown(17) Then
   MoveEntity player,0,0,sp
EndIf

If KeyDown(31) Then
   MoveEntity player,0,0,-sp
EndIf

If KeyDown(30) Then
   MoveEntity player,-sp,0,0
EndIf

If KeyDown(32) Then
   MoveEntity player,sp,0,0
EndIf    

UpdateWorld

RenderWorld
 
DrawImage kreuz,505,378
DrawImage status,3,690
Text 90,720,"Da kommen einmal die HP hin ;)"

Flip

Wend

 

Ich habe daran gedacht, einen zweiten pivot zu machen (auch parent zu player) und als kopf zu definieren. Und dann die Mausdrehung der Y-Achse nur auf den "Kopf-pivot" zu übertragen. Ich weiß aber nicht, wie ich das in den Code umsetzten könnte. Würde mich sehr über Lösungsvorschläge freuen. Danke Smile

Klar ausgedrückt: eine klassische Egoshooter-Steuerung

Bitte meldet euch, wenn ihr nicht versteht, was ich meine

mfg Honesch
Das Leben ist wie ein Computerspiel. Scheiß Handlung aber geile Grafik !

Markus2

BeitragMo, Jan 14, 2008 14:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Den Spieler nur im Y drehen (Turn) weil der Kopf sich dann mit dreht .
Die Camera an den Kopf hängen und dort nur den Pitch ändern.
Den Spieler vor/zurück bewegen entlang der Z Achse mit MoveEntity .

Kopf und Spieler könnte man auch seperant drehen aber das macht keiner .
 

Honesch

BeitragMo, Jan 14, 2008 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm hört sich logisch an Rolling Eyes .....bei mir liegst im Moment an der Code-Umsetzung Embarassed ..wäre nett wenn du mir den Teil kurz in Code umsetzen könntest. Ich kapiers so ungefähr aber da kommt bei mir nichts raus. Danke
Das Leben ist wie ein Computerspiel. Scheiß Handlung aber geile Grafik !

Markus2

BeitragDi, Jan 15, 2008 0:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne , nicht schon wieder , dieses Thema hatten wir schon 1000 mal Wink
Mußte mal ein bischen Suchen nach Egoshooter und Camera .

Habe dir mal ein bischen ausgeschnitten ...
Code: [AUSKLAPPEN]


Type Player_Type

 Field Nr
 Field Team
 Field CameraPivot
 Field Camera
 Field Entity

 Field KUp   ;Simulate Moving Keys
 Field KDown
 Field KLeft
 Field KRight
 Field KSpace

 Field Computer

End Type

Global CameraPivot
Global Camera

CameraPivot=CreatePivot()
Camera=CreateCamera(CameraPivot)

NameEntity CameraPivot,"CameraPivot"
NameEntity Camera,"Camera"

PositionEntity CameraPivot,0,168,-200

 Player.Player_Type=New Player_Type
 Player\Nr=Nr
 Player\Team=Team

 Player\CameraPivot=CreatePivot(Player\Entity)
 Player\Camera     =CreatePivot(Player\CameraPivot)
 MoveEntity Player\CameraPivot,0,68,15

Global ThisPlayer.Player_Type ;it allready exist 

ThisPlayer=FindPlayer (2,1) ;set the actual Player

 ;---------------------------- Switch Player (and the Camera)

 If KeyHit(2) Then
  ThisPlayer=FindPlayer (2,1)
  ThisPlayer\Computer=0
 EndIf

 If KeyHit(3) Then
  ThisPlayer=FindPlayer (2,2)
  ThisPlayer\Computer=0
 EndIf

 ;-----------------------------------------------------------

 If KeyDown(200) Then ThisPlayer\KUp=1
 If KeyDown(205) Then ThisPlayer\KRight=1
 If KeyDown(203) Then ThisPlayer\KLeft=1
 If KeyDown(208) Then ThisPlayer\KDown=1
 If KeyDown( 57) Then ThisPlayer\KSpace=1

 For Player.Player_Type = Each Player_Type
  UpdatePlayer Player 
 Next

 CameraOnPlayer ThisPlayer

Function CameraOnPlayer(p.Player_Type)

  PositionEntity CameraPivot,EntityX    (p\CameraPivot,True),EntityY  (p\CameraPivot,True),EntityZ   (p\CameraPivot,True)
  RotateEntity   CameraPivot,EntityPitch(p\CameraPivot,True),EntityYaw(p\CameraPivot,True),EntityRoll(p\CameraPivot,True)
  RotateEntity   Camera     ,EntityPitch(p\Camera     ),EntityYaw(p\Camera     ),EntityRoll(p\Camera     )

End Function


Function FindPlayer.Player_Type(Nr,Team)

 ;MR 21.07.2002
 
 For Player.Player_Type = Each Player_Type

  If Player\Nr=Nr And Player\Team=Team

   Return Player
 
  EndIf

 Next

End Function

...

 

Honesch

BeitragDi, Jan 15, 2008 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke dir sehr, dass du dir die Mühe gemacht hast, mir das herauszusuchen. hmmmm...ich dachte nicht so an types Rolling Eyes Embarassed sry..bin noch halber anfänger. Ich hatte bisher noch nicht viel mit types zu tun Embarassed . Lässt sich das nicht mit normalen entityparent, rotate move und turnentity befehlen lösen ? sry, wegen meinem Unwissen Embarassed

mfg Honesch
Das Leben ist wie ein Computerspiel. Scheiß Handlung aber geile Grafik !

Markus2

BeitragDi, Jan 15, 2008 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Struktur hat den Vorteil das du alles zusammen hast und
auch wie du siehst komplett an eine Unterfunktion übergeben kannst .
Wirste irgendwann nicht drum herum kommen .

Kannste also auch ohne Types machen .
 

Honesch

BeitragDi, Jan 15, 2008 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wie sieht das ohne types jetzt explizit aus ? (bitte nicht schimpfen, admins, ich beschäftige mich wirklich damit)


mfg Honesch
Das Leben ist wie ein Computerspiel. Scheiß Handlung aber geile Grafik !

Markus2

BeitragDi, Jan 15, 2008 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Bevor du in deinem Spiel weiter rum fummelst mach dir erstmal ein Test Projekt .

Ein Plane mit Karo Texture .
Dann machste dir einen Cube als Spieler Body und einen Cube als Kopf
und gibt beiden irgendeine Farbe .
Dann machste dir eine Camera und hängst die am Kopf .
Und der Kopf hat als Parent den Body Cube .
Und dann versuchste das umzusetzen was ich oben schon erklärt habe .

Wenn Taste X dreh den Body mit TurnEntity 0,0.25,0
Wenn Taste Y beweg den Kopf TurnEntity 0.25,0,0
 

Honesch

BeitragDi, Jan 15, 2008 23:21
Antworten mit Zitat
Benutzer-Profile anzeigen
ok. danke für den tipp. werds mal ausprobieren Very Happy
Das Leben ist wie ein Computerspiel. Scheiß Handlung aber geile Grafik !

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group