Jumpen in 3D Welt?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

bruce85

Betreff: Jumpen in 3D Welt?

BeitragSo, Dez 24, 2006 6:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
also die Sprungfunktion in 2D ist ja Easy, jetzt habe ich das mal in 3D Welt probiert, funktionieren tut es in 3D, er springt kurz hoch und dann fliegt er wieder runter durch die Welt was nicht sein darf.
Die kollision functioniert eigentlich, aber sobald ich springen möchte, fliegt er durch die welt.
Hier mal die Sprungfunktion:

Code: [AUSKLAPPEN]
If KeyHit(57) Then
  jump_y_temp# = 6 ;je höher der wert, deste hörer springt der player
  jump=True ; jump auf true setzen
EndIf

If jump = True Then
  jump_y_temp# = jump_y_temp# -.50
  CameraYMove# = CameraYMove# + jump_y_temp#
EndIf

TranslateEntity camera,0,-10,0
;und hier die kollision
Collisions 1,2,2,2


Es wäre sehr net von euch wenn ihr mir helfen könntet, vielen dank schonmal Wink

MfG Andreas
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250
 

Phlox

BeitragSo, Dez 24, 2006 11:31
Antworten mit Zitat
Benutzer-Profile anzeigen
jump bleibt TRUE. Es muss aber wieder auf FALSE gesetzt werden, nachdem du gesprungen bist.

Code: [AUSKLAPPEN]

If jump = True Then
  jump_y_temp# = jump_y_temp# -.50
  CameraYMove# = CameraYMove# + jump_y_temp#
  jump=FALSE
EndIf
 

bruce85

BeitragSo, Dez 24, 2006 11:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke dir,
das kann man aber nicht so machen, da ansonsten die Sprungfunktion sofort wieder verlassen wird, der springt dann vll nur ein pixel dann wieder false.
Ich muss überprüfen, wann der player wieder auf die Erde kollidiert, aber wie mache ich das?

MfG Andreas
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250
 

Phlox

BeitragSo, Dez 24, 2006 11:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

If EntityCollided (CAM,TERRAIN) Then jumperlaubnis=1

If jump = True And jumperlaubnis=1 Then
  jump_y_temp# = jump_y_temp# -.50
  CameraYMove# = CameraYMove# + jump_y_temp#
;  jump=FALSE
  jumperlaubnis = 0
EndIf
 

bruce85

BeitragSo, Dez 24, 2006 12:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Da tut sich garnix, es flackert nur wenn ich Springen möchte.
Gibt es vll eine andere möglichkeit zum Springen?
z.B. wie bei Counter Strike, eine einfache Sprungfunktion?

Danke schonmal.

MfG Andreas
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250
 

Schnuff

BeitragSo, Dez 24, 2006 12:26
Antworten mit Zitat
Benutzer-Profile anzeigen
If KeyHit(57) And Jump=False Then
jump_y_temp# = 6 ;je höher der wert, deste hörer springt der player
jump=True ; jump auf true setzen
EndIf

If jump = True Then
jump_y_temp# = jump_y_temp# -.50
CameraYMove# = CameraYMove# + jump_y_temp#
if jump_y_temp#<=0 then jump=False
EndIf

TranslateEntity camera,0,-10,0
;und hier die kollision
Collisions 1,2,2,2







So?
Edit, wo wird eigentlich deine "CameraYMove" genutzt?
Programmers dont die. They gosub without return...
 

bruce85

BeitragSo, Dez 24, 2006 13:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke dir.
Die camera move wird hier ausgeführt:

Code: [AUSKLAPPEN]
RotateEntity camera,EntityPitch(camera)+MouseYSpeed()*.10,EntityYaw(camera)-MouseXSpeed()*.10,0
MoveEntity Camera,CameraXMove#,CameraYMove#,CameraZMove#


alles über Renderworld.

MfG Andreas
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

Black Spider

BeitragSo, Dez 24, 2006 13:45
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würde den Jump erst bei Kollision wieder False setzen.

Code: [AUSKLAPPEN]
If KeyHit(57) And jump = False Then
jump = True
jump_y# = max_sprunghoehe# ;3 oder sowas, auf jedenfall größer als die Schwerkraft!
End If

If jump = True Then
jump_y# = jump_y# - (max_sprunghoehe#-(jump_y#/1.5))
TranslateEntity player,0,jump_y#,0
End If

If EntityCollided(player,GRUND) Then jump = False


müsste funktionieren.
jump_y# = jump_y# - (max_sprunghoehe#-Abs((jump_y#/1.5)))
das ist, damit man immer schneller runterfällt, wie in der Realität; geht aber auch mit - .07 oder sowas in der art
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif
 

bruce85

BeitragMo, Dez 25, 2006 2:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke dir, das geht aber nicht, der spring ganz wenig nach oben und fliegt blitz schnell durch die map, dann sieht man garnix mehr.
woran kann das liegen?

MfG Andreas
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

FireballFlame

BeitragMo, Dez 25, 2006 3:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum überhaupt eine True/False-Variable?
Mach es doch einfach so:

Irgendwo am Anfang: Code: [AUSKLAPPEN]
Global Fallgeschwindigkeit#=0

In der Hauptschleife: Code: [AUSKLAPPEN]
If KeyHit(57) Then fallgeschwindigkeit=fallgeschwindigkeit-2     ; Sprungstärke/-höhe

fallgeschwindigkeit=fallgeschwindigkeit+.01       ; Anziehungskraft
If EntityCollided(player,GRUND) And fallgeschwindigkeit>0 Then fallgeschwindigkeit=0
TranslateEntity player,0,-fallgeschwindigkeit,0

Razz
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit
 

bruce85

BeitragMo, Dez 25, 2006 3:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Cool, Vielen Dank für deine Hilfe, es functioniert sehr gut Very Happy

Edit: Noch eine Frage und zwar wenn ich in der luft bin und nach unten kuck und nach vorne laufe, dann bewegt sich die camera nach unten, das darf ja net sein.
Wie kann ich das verhindern das man nur nach vorne und nach hinten laufen kann auch wenn ich nach oben oder unten kucke?

Des liegt dann wohl an diesem Code:
Code: [AUSKLAPPEN]
RotateEntity camera,EntityPitch(camera)+MouseYSpeed()*.10,EntityYaw(camera)-MouseXSpeed()*.10,0
MoveEntity Camera,CameraXMove#,CameraYMove#,CameraZMove#


oder ?

MfG Andreas
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

juse4pro

Betreff: lol anarchie

BeitragDi, Jan 23, 2007 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
kann mir vieleicht jemand den ganzen code geben
in zwei(vor der while-schleife, in while-schleife)

wäre sehr dankbar.

mfg: mortus
Portfolio |LinkedIn |XING

Black Spider

BeitragDi, Jan 23, 2007 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst dir das ganz einfach selber machen;
falls nein, nimm den. Hatte ich gerade noch aufm Rechner

Code: [AUSKLAPPEN]

Graphics3D 1024,768,32,1
SetBuffer BackBuffer()

Const K_P=1
Const K_M=2
Collisions K_P,K_M,2,3

pleg = CreateCube()
EntityType pleg,K_P
MoveEntity pleg,0,5,0

cam = CreateCamera()
PositionEntity cam,0,5,-5

g = CreatePlane()
EntityType g,K_M
EntityColor g,155,0,0

CreateLight()

Local pVy#


While Not(KeyHit(1))

If KeyDown(15) Then PointEntity cam,pleg

If KeyDown(17) Then MoveEntity pleg,0,0,0.3
If KeyDown(31) Then MoveEntity pleg,0,0,-.3
If KeyDown(32) Then TurnEntity pleg,0,-.7,0
If KeyDown(30) Then TurnEntity pleg,0,.7,0
;Schwerkraft
If EntityCollided(pleg,K_M) Then
pVy = 0
PositionEntity pleg,EntityX(pleg),EntityY(pleg),EntityZ(pleg)
Else
pVy = (pVy - 0.015) * 0.999
PositionEntity pleg,EntityX(pleg),EntityY(pleg)+pVy,EntityZ(pleg)
End If


If KeyDown(57) And pVy = 0 Then pVy = .4

UpdateWorld
RenderWorld
Flip
Wend
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif

juse4pro

Betreff: danke

BeitragMi, Jan 24, 2007 12:57
Antworten mit Zitat
Benutzer-Profile anzeigen
thx für den code Smile Very Happy Smile
Portfolio |LinkedIn |XING

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group