Springen

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

rctuner

Betreff: Springen

BeitragMo, März 20, 2006 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
HI,

ich kann jetzt auf meinem Terrain rumlaufen und habe eine Schwerkraft gesetzt. (MoveEntity ... -1)
Zum Springen hab ich das genau so gemacht (If KeyDown () MoveEntity ... 5).

Nur fliegt man jetzt eher hoch und man kann die ganze Zeit die Taste gedrückt halten und fliegt hoch...

Wie mache ich das so wie in anderen gewöhnlichen spielen? Also dass ich die Taste nur einmal betätigen muss und man hochspringt. Und sie erst dann wieder betätigen kann wenn meine Figur wieder auf dem Terrein steht?

Bin am verzweifeln, da ich schon Tausende möglichkeiten ausprobiert hab...

mfg rctuner
 

antome

!!! gesperrt !!!

BeitragMo, März 20, 2006 15:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Deine Figur (Camera-Pivot) auf Kollision mit dem Terrain testen.

Solange Tastendruck sperren bis Kollision vorhanden.
antome

rctuner

BeitragMo, März 20, 2006 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, in meinen Tausend Tests war diese Idee auch mit drinn. Nur hat des leider net richtig funktioniert. Kannst du mir nichtmal ein Bsp. Code geben?

Chester

BeitragMo, März 20, 2006 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Code:

;......

player\speed# = player\speed# + e_kraft#
player\y_pos = player\y_pos - player\speed#

;....

if Keyhit(57) then player\speed = 30

;.....

drawimage imgPlayer, player\x_pos, player\y_pos, player\frame

;...


Ist zwar aus einem 2D PRojekt, aber das Prinzip ist das selbe.



Edit:
Code:

Const gravity# = -0.5

Graphics3D 800,600,32,2

SetBuffer BackBuffer()

Global camera = CreateCamera()
PositionEntity camera, 70,50,0
light = CreateLight()
Type ball
    Field x#,y#,z#
    Field fall#
    Field kollision#
    Field gewicht#
End Type


Local Tball.ball = New ball

Tball\gewicht# = 0.5

mesh_ball = CreateSphere(100)
PositionEntity mesh_ball,0,10,0
ScaleEntity mesh_ball,5,5,5
EntityColor mesh_ball,0,0,250


EntityType mesh_ball,1
EntityRadius mesh_ball,5



Global feld = Createplane()
EntityColor feld,0,150,0
EntityType feld,2
Collisions 1,2,2,2

Repeat

   
Tball\x# = EntityX( mesh_ball )
Tball\y# = EntityY( mesh_ball )
Tball\z# = EntityZ( mesh_ball )

Tball\kollision = EntityCollided(mesh_ball, 2)


If Tball\kollision = 0 Then
  Tball\fall# = Tball\fall# + gravity#*Tball\gewicht#
  Tball\y#    = Tball\y#    + Tball\fall#
 
  If Keyhit(57) Then Tball\fall = 20 
 
EndIf


If Tball\kollision Then
 Tball\fall# = -Tball\fall#/1.5
EndIf


PositionEntity mesh_ball, Tball\x#, Tball\y#, Tball\z#


   PointEntity camera, mesh_ball
   

   UpdateWorld()
   RenderWorld()
   


 Flip
Until KeyHit(1)


Hier haste eine schnell zusammengecodete 3D-Demo.

TheProgrammer

BeitragMo, März 20, 2006 18:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde linepick benutzen, um zu Prüfen, ob der Spieler Boden unter seinen Füßen hat.
aktuelles Projekt: The last day of human being
 

gutters

BeitragFr, März 24, 2006 9:40
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würde lieber so machen..
Code:
if entitycollided(player,Land_Collision)
If Keyhit(57) then moveentity player,0,4,0
endif

Ich habe es probiert. Es klapt bei mir.
Wenn er "fliegt" dann er kann auch gehen, aber wenn du auch dieses code benutzt, dann kann er nicht beim fliegen gehen.

Code:
    If EntityCollided(Player,Land_Collision)
   If KeyDown(203) Then MoveEntity Player,-.1,0,0
   If KeyDown(205) Then MoveEntity Player,.1,0,0
   ; Move the player backwards and forwards...
   If KeyDown(200) Then MoveEntity Player,0,0,.1
   If KeyDown(208) Then MoveEntity Player,0,0,-.1
   EndIf

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group