Waffenbewegung, klappt nicht ganz.

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Rob_

Betreff: Waffenbewegung, klappt nicht ganz.

BeitragMo, Jan 17, 2005 3:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ich programmiere zuzeit ein 3D Ego-Shooter und ich habe ein problem undzwar, wenn ich mit der maus nach unten zeige rutscht man nach hinten wie kann ich das verhindern?

Code: [AUSKLAPPEN]
;PLAYER_MOVEMENT
Function movement()

   key_arrow_right = 32
   key_arrow_left  = 30
   key_arrow_up    = 17
   key_arrow_down  = 31
   key_arrow_jump  = 57

   ; --------------------------------------------------------------
   ;  Key-Movement
   ; --------------------------------------------------------------
   If KeyDown(KEY_ARROW_RIGHT) Then MoveEntity camera, player_sp_x#,0, 0
   If KeyDown(KEY_ARROW_LEFT)  Then MoveEntity camera,-player_sp_xm#,0, 0
   If KeyDown(KEY_ARROW_DOWN)  Then MoveEntity camera, 0,0,-player_sp_zm#
   If KeyDown(KEY_ARROW_UP)    Then MoveEntity camera, 0,0,player_sp_z# And weapon_move()
   If KeyHit(KEY_ARROW_JUMP)   Then jump_var = 1
     
 
      

   
   ; --------------------------------------------------------------
   ;  Cache MouseMovement
   ; --------------------------------------------------------------
   mxs#=-MouseXSpeed() /3.0
   mys#= MouseYSpeed()  /3.0
   
   ; --------------------------------------------------------------
   ;  Rotate and limit Camera-Rotation
   ; --------------------------------------------------------------
   If( mxs# <> 0.0 ) Then RotateEntity camera,EntityPitch(camera),EntityYaw(camera)+mxs#,EntityRoll(camera)
   If( mys# >  0.0 ) Then
      If( EntityPitch(camera)+mys#>70 ) Then mys#=70-EntityPitch(camera)
      RotateEntity camera,EntityPitch(camera)+mys#,EntityYaw(camera),EntityRoll(camera)
   ElseIf( mys# < 0 ) Then
      If( EntityPitch(camera)+mys#<-70 ) Then mys#=-70-EntityPitch(camera)
      RotateEntity camera,EntityPitch(camera)+mys#,EntityYaw(camera),EntityRoll(camera)
   EndIf
   MoveMouse GraphicsWidth()/2, GraphicsHeight()/2


       If Not kollision = EntityCollided(camera,plane) Then MoveEntity camera,xx,-.4,zz
      If kol = 1 Then MoveEntity camera,xx,-.4,zz


End Function
AMD Athlon 64 3500+ | Infineon 1 GB DDR RAM | nVidia Geforce 7800 GTX
  • Zuletzt bearbeitet von Rob_ am Mo, Jan 17, 2005 20:50, insgesamt einmal bearbeitet
 

Klaas

BeitragMo, Jan 17, 2005 10:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
 If Not kollision = EntityCollided(camera,plane) Then MoveEntity camera,xx,-.4,zz
      If kol = 1 Then MoveEntity camera,xx,-.4,zz


soll wahrscheinlich die Schwerkraft darstellen.
versuch mal anstatt "MoveEntity" "TranslateEntity" zubenutzen.

Lies es dir mal in der OH (Online Hilfe) durch, dann siehst du sicher gleich den Unterschied.

Rob_

BeitragMo, Jan 17, 2005 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja genau das war translateentity Rolling Eyes habs total vergessen, ok danke
AMD Athlon 64 3500+ | Infineon 1 GB DDR RAM | nVidia Geforce 7800 GTX

Unplugged

BeitragMo, Jan 17, 2005 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Und das war eine Beginnerfrage? Puh, ich fühle mich noch ein paar Sonnen entfernt von einem Ego-Shooter.
User posted image

Rob_

BeitragMo, Jan 17, 2005 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
So ich habe erneut ein problem, erstmal erklären soweit ich kann ^^.

Ich habe eine Waffe als entityparent an die camera geklebt ich ja klar, nun wenn ich mich bewege klappt alles super gut, keine probleme.
Dann weils zu langweihlig ist das die waffe sich nicht beim bewegtn bewegt, habe ich so eine kleine function geschrieben:

;WEAPON_BEWEGUNG = Die waffe macht eine bewegung nach links rechts.

;WEAPON SCHUSS = die waffe bewegt sich vor und zurück.

Problem =

Wenn ich laufe dann bewegt sich die waffe alles bestens auch wenn ich erneut nach vorne laufe bewegt sich die waffe exakt wie ich wollte,

wenn ich beim laufen die mousehit(1) taste drücke hört die bewegung auf und die waffe bewegt sich nach vorne und nach hinten wie ich wollte,
doch wenn ich erneut mousedown(1) drücke dannbewegt sich die waffe anch hinten und verschwindet : (
Wieso ist das so?

( Unten noch code von bewegung)

Code: [AUSKLAPPEN]
;WEAPON_BEWEGUNG
Function weapon_move()

If weapon_left = 1 Then
TranslateEntity item_weapon_smach,-.01,-.01,0
weaponcounter = weaponcounter + 1
EndIf

If weaponcounter = 10 Then
weapon_left = 0
weaponcounter = 0
weapon_up = 1
EndIf

If weapon_up = 1 Then
TranslateEntity item_weapon_smach,.01,.01,0
weaponcounter = weaponcounter + 1
EndIf

If weaponcounter = 10 Then
weapon_up = 0
weaponcounter = 0
weapon_right = 1
EndIf

If weapon_right = 1 Then
TranslateEntity item_weapon_smach,.01,-.01,0
weaponcounter = weaponcounter + 1
EndIf

If weaponcounter = 10 Then
weapon_right = 0
weaponcounter = 0
weapon_up2 = 1
EndIf

If weapon_up2 = 1 Then
TranslateEntity item_weapon_smach,-.01,.01,0
weaponcounter = weaponcounter + 1
EndIf

If weaponcounter = 10 Then
weapon_up2 = 0
weaponcounter = 0
weapon_left = 1
EndIf

End Function

;WEAPON SCHUSS
Function weapon_move2()

If weapon_front = 1 Then
TranslateEntity item_weapon_smach,0,0,-.07
weaponcounter = weaponcounter + 1
EndIf

If weaponcounter = 5 Then
weapon_front = 0
weaponcounter = 0
weapon_back = 1
EndIf

If weapon_back = 1 Then
TranslateEntity item_weapon_smach,0,0,.07
weaponcounter = weaponcounter + 1
EndIf

If weaponcounter = 5  Then
weapon_back = 0
weaponcounter = 0
weapon_front = 1
EndIf

End Function



Das hier ist die bewegung.

Code: [AUSKLAPPEN]
;PLAYER_MOVEMENT

Function movement()

   key_arrow_right = 32
   key_arrow_left  = 30
   key_arrow_up    = 17
   key_arrow_down  = 31
   key_arrow_jump  = 57
   mouse_down = 1

   ; --------------------------------------------------------------
   ;  Key-Movement
   ; --------------------------------------------------------------
   If KeyDown(KEY_ARROW_RIGHT) Then MoveEntity camera, player_sp_x#,0, 0
   If KeyDown(KEY_ARROW_LEFT)  Then MoveEntity camera,-player_sp_xm#,0, 0
   If KeyDown(KEY_ARROW_DOWN)  Then MoveEntity camera, 0,0,-player_sp_zm#
   If KeyDown(KEY_ARROW_UP) = 1 Then
      MoveEntity camera, 0,0,player_sp_z#
      weapon_move_var = 1
   ElseIf KeyDown(KEY_ARROW_UP) = 0 Then
      weapon_move_var = 0
     
   EndIf

   If KeyHit(KEY_ARROW_JUMP) Then jump_var = 1
     

   If MouseDown(mouse_down) = 1 Then
   weapon_move_var = 0
   weapon_move2_var = 1   
   
    ElseIf MouseDown(mouse_down) = 0 Then
    weapon_move2_var = 0

   EndIf
   
   ; --------------------------------------------------------------
   ;  Cache MouseMovement
   ; --------------------------------------------------------------
   mxs#=-MouseXSpeed() /3.0
   mys#= MouseYSpeed()  /3.0
   
   ; --------------------------------------------------------------
   ;  Rotate and limit Camera-Rotation
   ; --------------------------------------------------------------
   If( mxs# <> 0.0 ) Then RotateEntity camera,EntityPitch(camera),EntityYaw(camera)+mxs#,EntityRoll(camera)
   If( mys# >  0.0 ) Then
      If( EntityPitch(camera)+mys#>70 ) Then mys#=70-EntityPitch(camera)
      RotateEntity camera,EntityPitch(camera)+mys#,EntityYaw(camera),EntityRoll(camera)
   ElseIf( mys# < 0 ) Then
      If( EntityPitch(camera)+mys#<-70 ) Then mys#=-70-EntityPitch(camera)
      RotateEntity camera,EntityPitch(camera)+mys#,EntityYaw(camera),EntityRoll(camera)
   EndIf
   MoveMouse GraphicsWidth()/2, GraphicsHeight()/2


       If Not kollision = EntityCollided(camera,plane) Then TranslateEntity camera,xx,-.1,zz
      If kol = 1 Then TranslateEntity camera,xx,-.1,zz



End Function


Mfg
Rob
AMD Athlon 64 3500+ | Infineon 1 GB DDR RAM | nVidia Geforce 7800 GTX
 

Klaas

BeitragMo, Jan 17, 2005 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier erstmal ein paar Pubnkte und Kommas (,,,,,........) Very Happy
Dann tut man dich auch gleich besser verstehen.

Also, leider kann man nicht sehen was du mit den Variablen "weapon_move_var" eigentlich machst.

Aber ich schätze mal, das du solange die Maustaste gedrückt wird die Bewegung nach hinten ausführst und dadurch die Waffe zuweit nach hinten fährt. Mousehit tritt nur ein wenn die Maustaste wieder losgelassen wird. Mausdown allerdings tritt solange ein wie die Maustaste gedrückt gehalten wird.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group