problem mit ducken

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

kolloffnikoff

Betreff: problem mit ducken

BeitragMi, Sep 15, 2004 10:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich stehe gerade vor folgendem Problem...

Ich hab mir dedacht mein 3d shooter spieler sollte sich auch ducken können... als kollision hab ich eine elliptische kugel genommen...wenn er sich duckt wird diese kleiner.
Um zu verhindern, dass er in zu kleinen gängen wieder aufstehen kann hab ich eine abfrage mit linepick nach oben gemacht um zu schauen ob da in unmittelbarer nähe eine wand ist.

Problem ist: er steht auch manchmal einfach so nicht mehr auf....nur an manchen stellen in der map...ich versteh das nicht...vielleicht hab ich irgendwas übersehn....ich weiss nicht mehr weiter

Ich poste hier mal den code meiner player.bb wobei nur die Update_Player() wirklich relevant ist...vielleicht hilft der rest ja dem verständniss...
Code: [AUSKLAPPEN]

Include "collisions.bb"

Type T_Player
   Field pivot
   Field camera
   
   Field yspeed#
   Field movespeed
   
   Field crouch
End Type

Global player.T_Player


Function Init_Player()
   ;Setup player
   player.T_Player = New T_Player
   
   ;Base
   player\pivot=CreatePivot()
   EntityRadius player\pivot, 16, 56
   EntityType player\pivot,col_player
   
   ;Camera
   player\camera=CreateCamera( player\pivot )
   MoveEntity player\camera,0,32,0
      
   ;Jump/Crouch
   player\yspeed#=0.0
   player\movespeed=8
   player\crouch=False
   
   ;Setup collisions
   Collisions col_player,col_environment,2,3
      
   
   MoveMouse 400,300
End Function


Function Update_Player()
   ;Look around
   mys = MouseYSpeed()/2
   If Abs(EntityPitch(player\camera)+mys)<89 Then
      TurnEntity player\camera,mys,0,0
   EndIf
   TurnEntity player\pivot,0,-MouseXSpeed()/2,0
   
   ;Movement
   If KeyDown(17) MoveEntity player\pivot,0,0,player\movespeed
   If KeyDown(31) MoveEntity player\pivot,0,0,-player\movespeed
   If KeyDown(30) MoveEntity player\pivot,-player\movespeed,0,0
   If KeyDown(32) MoveEntity player\pivot,player\movespeed,0,0
      
   ;Es lebe die schwerkraft
   player\yspeed=player\yspeed-2
   MoveEntity player\pivot,0,player\yspeed,0
   
   ;Go crouch
   If KeyDown(42) And player\crouch=False
      player\crouch=True
      EntityRadius player\pivot, 10, 32
      TranslateEntity player\camera,0,-10,0
      player\movespeed=5
   End If
####PROBLEM HIER#############...glaub ich
   ;Stand up
   If KeyDown(42)=0 And player\crouch=True
      px=EntityX(player\pivot)
      py=EntityY(player\pivot)
      pz=EntityZ(player\pivot)

      If Not LinePick( px,py+32,pz, px,py+80,pz, 16 )
         player\crouch=False
         EntityRadius player\pivot, 16, 56
         TranslateEntity player\camera,0,10,0
         player\movespeed=8
         TranslateEntity player\pivot,0,30,0
      End If
   End If
#######UND SCHLUSS##############   

   ;Collisions
   col=CountCollisions(player\pivot)
   For i=1 To col
      If CollisionNY(player\pivot,i) Then ;Baby,wenn ich down bin
         player\yspeed=0
         If KeyDown(57) player\yspeed=20 ;dann flieg ich nur so dahin(Jump),muha
      End If
   Next
   
   
   MoveMouse 400,300
End Function


danke schonmal...und wenns nur fürs nachdenken ist Wink

cya

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group