Md2 hochspringen lassen. Code funktioniert nicht richtig
Übersicht

mevsmpBetreff: Md2 hochspringen lassen. Code funktioniert nicht richtig |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
HI LEUTZ,
Ich hab versucht mein md2 mit Leertaste springen zu lassen, allerdings klappt das net so ganz wie es sein soll. Das md2 sollte wie ein Mensch einfach hochspringen und wieder runter fallen. Mein Code klappt irgendwie net soganz ich hab hier im Forum auch schon ein fertigen "Sprung-code" gesehen, aber dieser code war mit PositionEntity. Nachdem einfügen konnte ich mein md2 garnet mehr bewegen:( Am besten wär also ein code mit MoveEntity. hier mal mein code wo das Springen nicht richtig funzt (mir MoveEntity): sry das ich den ganzen Code poste. Aber dann könnt ihr mir vielleicht präziese Vorschläge machen. Code: [AUSKLAPPEN] Include "../start.bb" ; cube cube=CreateCube() FitMesh cube,-250,0,-250,500,500,500 FlipMesh cube tex=LoadTexture( "tex.bmp" ) ScaleTexture tex,1.0/3,1.0/3 EntityTexture cube,tex EntityAlpha cube,.4 EntityFX cube,1 ;mirror m=CreateMirror() ;light light=CreateLight() TurnEntity light,45,45,0 ;camera camera=CreateCamera() cam_xr#=30:cam_yr#=0:cam_zr#=0:cam_z#=-100 ;model tex=LoadTexture( "model\ogro\skin.jpg" ) dragon=LoadMD2( "model\ogro\tris.md2" ) EntityTexture dragon,tex PositionEntity dragon,0,25,0 TurnEntity dragon,0,150,0 While Not KeyHit(1) If KeyDown(203) TurnEntity dragon,0,8,0 End If If KeyDown(205) TurnEntity dragon,0,-8,0 End If If KeyDown(200) MoveEntity dragon,0,0,6.0 moved = 1 forward = 1 End If If KeyDown(208) MoveEntity dragon,0,0,-3.0 moved = 1 forward = 0 End If ; Hier der Spring Teil If KeyDown(57) Y#=EntityY# (dragon) y1$=y1$+0.4 If KeyDown(57)=1 If Y#>40 MoveEntity dragon,0,-y+25,0 MoveEntity dragon,0,y1$,0 EndIf ;Ende If moved = True If forward = True If MD2AnimTime(dragon) < 40 Or MD2AnimTime(dragon) > 46 Then AnimateMD2 dragon,1,0.3,40,46 End If End If End If If forward = False If MD2AnimTime(dragon) < 40 Or MD2AnimTime(dragon) > 46 Then AnimateMD2 dragon,1,-0.08,40,45 End If End If If moved = False If MD2AnimTime(dragon) < 0 Or MD2AnimTime(dragon) > 10 Then AnimateMD2 dragon,1,0.2,0,15 End If End If moved = 0 forward = 0 If KeyDown(30) cam_z=cam_z+1:If cam_z>-10 cam_z=-10 Else If KeyDown(44) cam_z=cam_z-1:If cam_z<-180 cam_z=-180 EndIf PositionEntity camera,0,0,0 RotateEntity camera,cam_xr,cam_yr,cam_zr MoveEntity camera,0,0,cam_z UpdateWorld RenderWorld Text 120,35,"Zoom in Y/Z ; Zoom out A" Text 0,0,"MD2AnimTime: "+MD2AnimTime(dragon) Flip Wend Hat jemand ne Idee? :oops: |
||
![]() |
preachie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was mir so spontan auf den ersten Blick aufgefallen ist:
Code: [AUSKLAPPEN] y1$=y1$+0.4
Wieso deklarierst Du die Variable y1 als String? Sollte ja wohl eher ein Float, sprich y1# sein, oder? ![]() Vielleicht hilft das ja schon weiter ![]() Außerdem wäre es noch ganz hilfreich zu erfahren, was denn genau bei Deinem Code nicht klappt? Springt das Objekt gar nicht, oder läuft das Programm nicht, oder was passiert? Gruß Preachie |
||
mevsmp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
HI!
Also bei diesem code ist es so dass wenn ich die Leertase drücke das md2 nach oben "gemovt" wird. Ab einer Bestimmten Höhe wird das md2 wieder auf den Boden gesetzt. Das sieht ziemlich un Physikalisch aus. Außerdem muss ich die Leertase Gedrückt halten damit das Md2 sich hochbewegt, wenn ich loslasse, bleibt der einfach in der aktuellen position stehen. Eigendlich sollte man ja mit einmal drücken der Leertaste Springen! mfg mevsmp |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Warum du unbedingt alles mit MoveEntity machen willst anstelle auch mal PositionEntity zu benutzen, bleibt mir ein Rätzel... Aber wenn du nicht willst das das md2 beim loslassen der Space-Taste in der Luft stehen bleibt, brauchst du denoch eine zusätzliche Variable die die Y-Geschwindigkeit angibt. Die Geschwindigkeitsvariable sollte dann aufgrund einer Gravitation immer verringert werden und auf Null gesetzt werden wenn Bodenkontakt besteht. Beim drücken der Space-Taste und Bodenkontakt wird dann einfach die Geschwindigkeit auf 1 oder was auch immer gesetzt... Die Y-Geschwindigkeitsvariable sollte dabei eine Float sein...
Hier ein Beispiel: Code: [AUSKLAPPEN] Graphics3D 640,480,32,2
SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() cube=CreateCube() TurnEntity light,70,0,0 PositionEntity camera,0,10,-20 yg#=0 While Not KeyHit(1) If KeyDown(203) TurnEntity cube,0,2,0 If KeyDown(205) TurnEntity cube,0,-2,0 If KeyDown(200) MoveEntity cube,0,0,.4 If KeyDown(208) MoveEntity cube,0,0,-.4 If KeyDown(57) And EntityY(cube)<0 yg=1 MoveEntity cube,0,yg,0 yg=yg-.04 If EntityY(cube)<0 yg=0 RenderWorld Flip Wend End |
||
mevsmp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey Danke, funktioniert im dem BSP genauso wie ich es wollte ![]() Werd gleich mal probieren den Code in mein Code einzubauen. Nochmals THX mfg mevsmp |
||
aave13 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
so, hab das bei mir auch mal eingebaut, echt gut. einziges und gravierendes problem: auf treppen und bergigem terrain... ![]() könnte mir da nochmal jemand bitte helfen, wäre echt nett danke mfg aave13 |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie wäre es mit einer Fehlerbeschreibung ? | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
aave13 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok, also los: immoment sieht die sprungszene so aus:
Code: [AUSKLAPPEN] Graphics3D 800,600,32
SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,100,8,-60 EntityType camera,1 EntityRadius camera,5 house=LoadMesh("house.3ds") ScaleEntity house,.5,.5,.5 PositionEntity house,10,0,10 EntityType house,2 light=CreateLight(2) PositionEntity light,78,10,-10 LightRange light,10 LightColor light,241,197,41 Collisions 1,2,2,2 yg#=0 x=0 While Not KeyHit(1) If KeyDown(200) Then MoveEntity camera,0,0,.2 If KeyDown(208) Then MoveEntity camera,0,0,-.2 If KeyDown(203) Then TurnEntity camera,0,1,0 If KeyDown(205) Then TurnEntity camera,0,-1,0 If KeyDown(2 ) Then MoveEntity camera,0,.3,0 If KeyDown(3 ) Then MoveEntity camera,0,-.3,0 If KeyDown(57) And entityY(camera)<6 yg=.5 TranslateEntity camera,0,yg,0 yg=yg-.04 If EntityY(camera)<0 yg=0 UpdateWorld RenderWorld Text 20,20,"x-koordinate: "+EntityX(camera) Text 20,30,"y-koordinate: "+EntityY(camera) Text 20,40,"z-koordinate: "+EntityZ(camera) Flip Wend End moment ich editiere gleich... k, so da hab ich das problem, wenn ich ne treppe oder so hochgehe, dann stimmt die 6 nicht mehr unter der die camera in der y koordinate sein muss um zu springen... |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group