Springen auf Terrain
Übersicht

StaniBetreff: Springen auf Terrain |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
~AUFSPALTUNG~ Der Rest war Spam. Hier das Wesentliche: mfG Holzchopf Und zwar hab ich ein Terrain gemacht.Man kann da auf dem Boden rummgehen und hat ein Ziel in der Mitte. Jetzt will ich auch gerne mal springen können.Doch irgendwie scheint das nicht zu gehen. Hier mein Code Code: [AUSKLAPPEN] Graphics3D 1024, 768, 32, 1
SetBuffer BackBuffer() ;Camera camera = CreateCamera() PositionEntity camera, 100, 1, 100 ;light light = CreateLight() RotateEntity light, 90, 0, 0 ;terrain terrain = LoadTerrain("heightmap.bmp") TerrainDetail terrain, 4000,True ScaleEntity terrain, 1, 50, 1 ;terrain textur textur1 = LoadTexture ("textur1.bmp",2) EntityTexture terrain,textur1, 0, 1 ;objekts Global ziel=LoadImage("ziel.bmp") MaskImage ziel,0,0,0 MidHandle ziel ;objekts ;main While Not KeyHit(1) If KeyDown(32) = 1 Then TurnEntity camera, 0, -1, 0 End If If KeyDown(30) = 1 Then TurnEntity camera, 0, 1, 0 EndIf If KeyDown(31) = 1 Then MoveEntity camera, 0, 0, -0.1 EndIf If KeyDown(17) = 1 Then MoveEntity camera, 0, 0, 0.1 EndIf If KeyDown(57) = 1 Then Sprung() End If x# = EntityX(camera) y# = EntityY(camera) z# = EntityZ(camera) ty# = TerrainY(terrain, x#, y#, z#) + 3 PositionEntity camera, x#, ty#, z# RotateEntity camera,EntityPitch(camera)+MouseYSpeed(),EntityYaw(camera)-MouseXSpeed(),0 RenderWorld UpdateWorld DrawImage ziel,512,384 Flip Wend End Function Sprung() For a = 1 To 10 ty# = ty# +1 Next For b = 1 To 10 ty# = ty# -1 Next End Function Das mit der For schleife ist jetzt nur grob gemacht.Dazwischen will ich noch pausen machen aber ich weiß nicht wie das geht.Ich kenn nur Delay und die Hilfe zeigt auch nichts. |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst nicht alle 10 Stufungen eines Sprungs in einer For/Next-Schleife abarbeiten, weil der Vorgang so innerhalb einer 1000tel Sekunde stattfindet.
Vielmehr mußt Du dafür sorgen, dass während der nächsten Spielsekunden immer nur ein Stückchen weitergesprungen wurd, Dazwischen soll ein FLIP den aktuell erreichten Zustand anzeigen. Das Ganze erreichst Du mit Timern: BlitzBasic: [AUSKLAPPEN] Graphics 800,600 Durch die Variable SprungZeit% erreichst Du, dass die Sprung-Funktion nur alle 100msec ausgeführt wird. Soll es irgendwann wieder zurückgehen, könte das so aussehen: BlitzBasic: [AUSKLAPPEN]
Du kannst also soviele Timer wie du Lust hast erstellen. Hier "kennt" die Variable SprungStartZeit% den Zeitpunkt, an dem der Sorung bereits 2 sec andauert. Ist der erreicht, beginnt die Sinkphase. |
||
Stani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok ich hab mal was eigenes geschrieben aber es funktioniert nicht:
Graphics 800,600 Global X%, Y% Global timer1=CreateTimer(10) X=100 Y=200 Repeat Cls If KeyDown(200)=1 Then Sprung() End If Rect X,Y,10,10 Flip Until KeyHit(1) End Function Sprung() timer1 = 0 If timer1 = 10 Then Y=Y+1 End If If timer1= 20 Then Y=Y+1 End If If timer1= 30 Then Y=Y+1 End If If timer1= 40 Then Y=Y+1 End If If timer1= 50 Then Y=Y-1 End If If timer1= 60 Then Y=Y-1 End If If timer1= 70 Then Y=Y-1 End If End Function |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
~VERSCHOBEN~ Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde. Für Codes benutze die CodeTags. Diese sind über dem Beitragsfenster zu erreichen. |
||
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 |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da hast du was verwechselt. Mit CreateTimer() erzeugtst du so eine Art Interrupts, die Dir dann helfen, wenn Du die Kontrolle an das Betriebsystem abgeben möchstes, um sie nach einer best. Zeit wieder zu erhalten.
BlitzBasic: [AUSKLAPPEN] timer=CreateTimer(10)erzeugt Dir einen Interrupt, der sich 10x pro Sekunde(=alle 100msec) meldet. Benutzt wird er dann mit BlitzBasic: [AUSKLAPPEN] WaitTimer Timer1 Die Variable Timer1% ist dabei die Bezeichnung dieses Timers und enthält keine Zeitwerte, sondern dient nur dazu diesen Timer immer wieder ansprechen zu können. Deine Probleme löst Du mit dem Millisecs()-Timer, der wirkliche (Uhr-)Zeiten in msec-Bereich liefert. Im Moment A steht er z.b. bei 83461m und eine Sekunde später bei 84461. Durch das Vergleichen des ersten mit dem zweiten Wert kommtst du dann auf die vergangene Zeit 1000msec. Sieh dir mein Beispiel oben an. Das System ist immer wieder das gleiche: BlitzBasic: [AUSKLAPPEN] Repeat Du Nimmst die "Uhrzeit" in eine Variable Zeit% oder zählst gleich was dazu, dann liegt dieser Zeitpunkt in der "Zukunft". Nun vergleichst Du laufend Millisecs() mit dieser Zeit und sobald Millisecs() größer als Zeit geworden ist, sind die 100msec vergangen. |
||
Stani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ah jetzt versteh ich das.Danke sehr.
Also müsste es ungefähr so gehen: Code: [AUSKLAPPEN] Global Zeit%=0 Global Zeitpunkt% Global X%,Y% repeat Cls if keydown(57) Then Sprung() End if Rect ,X,Y Flip Until keydown(1) End Function Sprung() Zeitpunkt% = Millisecs() if Zeit < Millisecs() Then Zeit = Millisecs() +300 Y=Y+1 End if if Zeitpunkt% = 5*Zeit% Then if Zeit > Millisecs() Then Zeit = Millisecs() -300 Y=Y -1 End if End if End if End function Beim wieder runterkommen bin ich mir nicht so sicher wie das gehen soll.Den ich muss ja fragen wieviel mal das schon + 300 gegangen ist und da ich ja nicht weiß wie lange das schon leuft hab ich mal Zeitpunkt hinzugefügt. Kann mir vielleicht einer einen ganzen Code posten,damit ich das verstehe??? Den das eine mit dem Hochgehen versteh ich ja aber mit dem Runterkommen nicht.... (Es tut mir Leid,dass dieser Thread etwas durcheinander geraaten ist.) Mfg Stani |
||
- Zuletzt bearbeitet von Stani am Di, Apr 06, 2010 17:58, insgesamt einmal bearbeitet
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, das wird doch schon...allerdings:
So wie du jetzt die Variable ZeitPunkt% benutzt, wird sie immer wieder auf Millisecs() verstellt, wenn die Funktion Sprung() gerufen wird. Da Dich aber ja die Zeit interessiert, die seit Sprungbeginn vergangen ist, wäre es schlauer, wie Variable nur beim ersten Aufruf von Sprung() zu setzen: BlitzBasic: [AUSKLAPPEN] Function Sprung() übrigens musst du am Ende jeder Funktion EndFunction schreiben! Nun vergleiche, um festzustellen, wieviel Zeit seit Sprungstart vergangen ist, immer die Variable mit Millisecs() BlitzBasic: [AUSKLAPPEN] If MilliSecs() < (Zeitpunkt% +2000) Then das gesamte: BlitzBasic: [AUSKLAPPEN] Function Sprung() bei "genug gesunken?" gehört dann auch der Teil rein, der dafür sorgt dass das Absinken wieder beendet wird, wenn die Figur den Boden erreicht |
||
Stani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok danke .Funktioniert super.Und das mit der Function end hab ich irgendwie vergessen.
Ich hab gerade ein etwas anderes Problemm.Ich hab mir ein neuen Code geschrieben,weil der alte nicht so gut war. Dazu hab ich eine cam ,Boden,cube und player.cam und Boden ist klar.Player ist der würfel(der Player) für Spätere Collisionen und Waffen...Cube ist einfach nur dazu da,damit man sieht in welche Richtung man geht. Das Problemm ist ja ,dass ich die Camera an die Position des players setze.Aber ich möchte ja die Camera drehen können um in diese Richtung zu gehen.Ich weiß aber nicht wie ich das machen soll.Das ist ja doof wenn ich in die eine Richtung laufe und die in die andere schaue. Code: [AUSKLAPPEN] Graphics3D 1024,768,32,1 SetBuffer BackBuffer() ;load objekts and strings Global Boden=CreatePlane() Global player=CreateCube() Global cam=CreateCamera() Global light=CreateLight() Global textur1=LoadTexture("textur1.bmp") Global cube=CreateCube() PositionEntity Boden,0,-1,0 PositionEntity cam,0,0,0 EntityTexture Boden,textur1 ScaleEntity Boden,1,1,1 PositionEntity player,0,0,0 PositionEntity cube,10,0,10 x#=EntityX(cam) y#=EntityY(cam) z#=EntityZ(cam) While Not KeyHit(1) Cls RenderWorld UpdateWorld Bewegung() PositionEntity cam,EntityX(player),EntityY(player),EntityZ(player) RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0 Flip Wend End Function Bewegung() If KeyDown(32) = 1 Then End If If KeyDown(30) = 1 Then EndIf If KeyDown(31) = 1 Then EndIf If KeyDown(17) = 1 Then EndIf If KeyDown (57) = 1 Then Sprung() EndIf End Function Function Sprung() If ZeitPunkt=0 Then Zeitpunkt% = MilliSecs() EndIf If Zeit < MilliSecs() Then Zeit = MilliSecs() +300 If MilliSecs() < (Zeitpunkt% +1500) Then MoveEntity player,0,1,0 Else ; würde bedeuten dass bereits 2 sec vergangen sind. MoveEntity player,0,-1,0 EndIf EndIf End Function Mfg Stani |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also normalerweise wird die Camera als ein Child des Players createt. Damit folgt sie immer dem Player, ohne dass man noch etwas programmieren muss:
BlitzBasic: [AUSKLAPPEN] Cam=CreateCamera(Player). Wenn Du nun den Spieler drehen möchtest dreht die Camera mit. Zusätzlich kannst Du den Camera jetzt wie einen Kopf auf einem Körper drehen. Damit wird nach vorne laufen und gleichzeitig nach rechts schauen möglich. War es das, was du wolltest? |
||
Stani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok ich hab jetzt ein ganzes Terrain(plane) und einen player,cam.........
Jetzt hab ich mal eine Hand mit einem Messer dazugefügt und es an die position des players gesetzt,nur das die z achse etwas höher ist,damit man die Hand und das Messer vorne sieht. Nur jetzt hab ich das Problemm,dass ich ,wenn ich mich drehe die hand sich nicht mitdreht und das ich in die Hand reinsehe. Wie lösse ich das Problemm?? Edit:Hab mal das Messer gegen eine Pistole ersetzt.Hier nochmal der Code: Code: [AUSKLAPPEN] Graphics3D 1024,768,32,1
SetBuffer BackBuffer() ;load objekts and strings Const pcoll=1 ;player Const ccoll=1 ;cube Global Boden=CreatePlane() Global player=CreateCube() Global cam=CreateCamera(player) Global light=CreateLight() Global textur1=LoadTexture("Texturen/textur1.jpg") Global cube=CreateCube() Global ziel=LoadImage("Texturen/ziel.bmp") MaskImage ziel,0,0,0 Global textur2=LoadTexture("Texturen/textur2.bmp") EntityRadius player,2 ;meshs Global pistole = LoadMesh ("Modele\Pistole\pistole.3ds") Global pistoletextur=LoadTexture("Modele\Pistole\pistoletextur.jpg") Global Dose1=LoadMesh("Modele\Dose1\Dose1.3ds") Global Doset1 =LoadTexture("Modele\Dose1\skin.jpg") Global Lampe1=LoadMesh ("Modele\Lampe\lampe.3ds") Global lampet1=LoadTexture("Modele\Lampe\lampe.jpg") ;detais PositionEntity Boden,0,-1,0 PositionEntity cam,0,0,0 EntityTexture Boden,textur1 ScaleEntity Boden,1,1,1 PositionEntity player,0,0,0 PositionEntity cube,10,0,10 PositionEntity light,10,0,0 EntityTexture cube,textur2 EntityType Lampe1,ccoll EntityType player,pcoll ;meshdeteis EntityTexture pistole,pistoletextur ScaleMesh pistole,0.1,0.1,0.1 ScaleMesh Lampe1 ,0.1,0.1,0.1 TurnEntity pistole,-90,0,0 TurnEntity Lampe1,-90,0,0 EntityTexture Dose1,Doset1 EntityTexture Lampe1,lampet1 PositionMesh Dose1,12,0,12 PositionEntity Lampe1 ,12,-1,12 ;Colisionen Collisions pcoll,ccoll,3,2 While Not KeyHit(1) Cls RenderWorld UpdateWorld Steuerung() DrawImage ziel,512,384 Flip Wend End Function Steuerung() PositionEntity pistole,EntityX(player),EntityY(player),EntityZ(player) If KeyDown(32) = 1 Then MoveEntity player,.3,0,0 End If If KeyDown(30) = 1 Then MoveEntity player,-.3,0,0 EndIf If KeyDown(31) = 1 Then MoveEntity player,0,0,-.3 EndIf If KeyDown(17) = 1 Then MoveEntity player,0,0,.3 EndIf x# = EntityX(player) z# = EntityZ(player) PositionEntity player, x#, 1, z# RotateEntity player,EntityPitch(player)+MouseYSpeed(),EntityYaw(player)-MouseXSpeed(),0 End Function |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
na,...ist das nicht das gleiche Problem? Auch die Hand und die Pistole sollten immer Childs des Player werden.
BlitzBasic: [AUSKLAPPEN] EntityParent Pistole, Player Danach verhält sich die Pistole wie an den Player angewachsen. Jede Drehung des Players oder jedes Bewegen nimmt auch die Pistole mit. Jede Drehung der Pistole findet realtiv zur Achse des Players statt. Der Player "schaut" dabei immer in seine aktuelle z-Richtung. Dort sind alle Achsen der Child-Elemente genau auf 0 Grad. Wie heisst den deine Hand? Ich kann die Stelle im Code gar nicht entdecken... |
||
Stani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die Hand ist bei der Pistole dabei.Nur das Problemm ist,dass sich die Pistole viel schneller bewegt und nicht vorne zu sehen ist sondern igrendwo in der Luft ist.Wen ich mich nach vorne bewege,dan bewegt sich die
Hand auch nach vorne aber viel viel schneller. Hier nochmal mein aktueler Code Code: [AUSKLAPPEN] Graphics3D 1024,768,32,1 SetBuffer BackBuffer() ;load objekts and strings Const pcoll=1 ;player Const ccoll=1 ;cube Global Boden=CreatePlane() Global player=CreateCube() Global cam=CreateCamera(player) Global light=CreateLight() Global textur1=LoadTexture("Texturen/textur1.jpg") Global cube=CreateCube() Global ziel=LoadImage("Texturen/ziel.bmp") MaskImage ziel,0,0,0 Global textur2=LoadTexture("Texturen/textur2.bmp") EntityRadius player,2 ;meshs Global pistole = LoadMesh ("Modele\Pistole\pistole.3ds") Global pistoletextur=LoadTexture("Modele\Pistole\pistoletextur.jpg") Global Dose1=LoadMesh("Modele\Dose1\Dose1.3ds") Global Doset1 =LoadTexture("Modele\Dose1\skin.jpg") Global Lampe1=LoadMesh ("Modele\Lampe\lampe.3ds") Global Lampe2=LoadMesh ("Modele\Lampe\lampe.3ds") Global Fass1=LoadMesh("Modele\Fass\Fass.3ds") Global Textu Global lampet1=LoadTexture("Modele\Lampe\lampe.jpg") ;detais PositionEntity Boden,0,-1,0 PositionEntity cam,0,0,0 EntityTexture Boden,textur1 ScaleEntity Boden,1,1,1 PositionEntity player,0,0,0 PositionEntity cube,10,0,10 PositionEntity light,10,2,10 EntityTexture cube,textur2 EntityType Lampe1,ccoll EntityType Lampe2,ccoll EntityType player,pcoll ;meshdeteis EntityTexture pistole,pistoletextur ScaleMesh pistole,0.1,0.1,0.1 ScaleMesh Lampe1 ,0.1,0.1,0.1 ScaleMesh Lampe2 ,0.1,0.1,0.1 TurnEntity pistole,-90,0,0 TurnEntity Lampe1,-90,0,0 TurnEntity Lampe2,-90,0,0 EntityTexture Dose1,Doset1 EntityTexture Lampe1,lampet1 EntityTexture Lampe2,lampet1 PositionMesh Dose1,12,0,12 PositionEntity Lampe1 ,20,-1,12 PositionEntity Lampe2 ,40,-1,12 EntityParent pistole, player ;Colisionen Collisions pcoll,ccoll,3,2 While Not KeyHit(1) Cls RenderWorld UpdateWorld Steuerung() DrawImage ziel,512,384 Flip Wend End Function Steuerung() PositionEntity pistole,EntityX(player),EntityY(player),EntityZ(player) If KeyDown(32) = 1 Then MoveEntity player,.3,0,0 End If If KeyDown(30) = 1 Then MoveEntity player,-.3,0,0 EndIf If KeyDown(31) = 1 Then MoveEntity player,0,0,-.3 EndIf If KeyDown(17) = 1 Then MoveEntity player,0,0,.3 EndIf x# = EntityX(player) z# = EntityZ(player) PositionEntity player, x#, 1, z# RotateEntity player,EntityPitch(player)+MouseYSpeed(),EntityYaw(player)-MouseXSpeed(),0 RotateEntity pistole,EntityPitch(pistole)+MouseYSpeed(),EntityYaw(pistole)-MouseXSpeed(),0 End Function Ah ja ich hab auch schon 2 Straßenlampen hinzugefügt.Damit alles übersichtlicher wird,hab ich auch noch Ordner mit Texturen und Modele,die auch unterordner haben. Edit:Das Springen geht auch nicht.Wenn ich Space drücke,dann geht das kurz hoch und dan wieder 2 mal runter und danah nur noch runter......... |
||
Stani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo nochmal.Das mit der Waffe hab ich gelöst(Dank ZaP).
Aber das springen geht immernoch nicht.Wenn ich bei dem einen Code Space drücke geht der hoch und runter aber danach kann ich nicht mehr springen. Ich kappier das einfach nicht mit dem springen.Kann mir bitte einer einen ganzen Code geben?? Das doofe ist,dass wenn ich oben auf meinen Kästen(cubes) bin,kann ich wieder nach unten,durch die Kästen,obwohl ich Collisons hab. Ich denk das war jetzt alles.Diese beien Sachen und dan werde îch weitermachen und euch nicht mehr nerven:D Danke Mfg Stani |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich sehe in Deinen Code-Beispiel überhaupt gar nichts, was auf "Springen" hindeutet... Wo ist denn der Code dazu? | ||
Stani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja das war auch der eine ohne springen.Ah ja ich ab die Pistole gegehn ein Maschienengewehr getauscht,Sounds zum schießen und leer scein dazugefügt.
Hier noch der Code: Code: [AUSKLAPPEN] Graphics3D 1024,768,32,1
SetBuffer BackBuffer() Global Boden=CreatePlane() Global player=CreateCube() Global cam=CreateCamera(player) Global light=CreateLight() Global textur1=LoadTexture("Texturen/textur1.jpg") Global ziel=LoadImage("Texturen/ziel.bmp") MaskImage ziel,0,0,0 Global textur2=LoadTexture("Texturen/textur2.bmp") Global Pschuss = LoadSound("Sounds\Gewehr\Schuss.wav") Global Pnachladen=LoadSound("Sounds\Gewehr\Nachladen.wav") Global S% Global Schuss=Pschuss Global Pleer = LoadSound("Sounds\Gewehr\leer.wav") Global Zeit%,Zeitpunkt%,Schusszeit% ;meshs Global Lampe1=LoadMesh ("Modele\Lampe\lampe.3ds") Global Lampe2=LoadMesh ("Modele\Lampe\lampe.3ds") Global lampet1=LoadTexture("Modele\Lampe\lampe.jpg") Global Wand1=LoadMesh("Modele\Wand\Wand.3ds") Global wandt1=LoadTexture("Texturen\wandt1.jpg") Global Gewehr = LoadMesh("Modele\Maschienengewehr\Maschienengewehr.3ds",player) Global gewehrt=LoadTexture("Modele\Maschienengewehr\gewehr.jpg") ;detais PositionEntity Boden,0,-1,0 PositionEntity cam,0,0,0 PositionEntity player,0,0,0 PositionEntity light,10,2,10 EntityTexture Boden,textur1 EntityTexture Wand1,wandt1 MoveEntity Gewehr,.2,-.2,.5 ;collisionstypen EntityType player,1 EntityType Lampe1,2 EntityType Lampe2,2 EntityType Wand1,2 EntityRadius Lampe1,2 EntityRadius Lampe2,2 EntityBox Wand1,30,-1,14,50,50,10 EntityRadius player,2 ;meshdeteis ScaleMesh Gewehr,0.1,0.1,0.1 ScaleMesh Lampe1 ,0.1,0.1,0.1 ScaleMesh Lampe2 ,0.1,0.1,0.1 ScaleEntity Boden,1,1,1 ScaleEntity Wand1,.5,.5,.5 TurnEntity Gewehr,-90,90,0 TurnEntity Lampe1,-90,0,0 TurnEntity Lampe2,-90,0,0 TurnEntity Wand1,-90,0,0 EntityTexture Lampe1,lampet1 EntityTexture Lampe2,lampet1 EntityTexture Gewehr,gewehrt PositionEntity Lampe1 ,20,-1,12 PositionEntity Lampe2 ,40,-1,12 PositionEntity Wand1,30,-1,14 Global Y#=2 ;Colisionen Collisions 1,2,2,2 While Not KeyHit(1) Cls Steuerung() DrawImage ziel,512,384 If KeyDown(57) Then Sprung() RenderWorld UpdateWorld Flip Wend End Function Steuerung() If KeyDown(32) = 1 Then MoveEntity player,.2,0,0 End If If KeyDown(30) = 1 Then MoveEntity player,-.2,0,0 EndIf If KeyDown(31) = 1 Then MoveEntity player,0,0,-.2 EndIf If KeyDown(17) = 1 Then MoveEntity player,0,0,.2 EndIf If MouseDown(1) = 1 Then If Schusszeit% < MilliSecs() Then Schusszeit% = MilliSecs() +70 S%=S%+1 PlaySound Schuss EndIf EndIf If S% = 120 Then Schuss = Pleer EndIf RotateEntity player,EntityPitch(player)+MouseYSpeed(),EntityYaw(player)-MouseXSpeed(),0 PositionEntity player,EntityX(player),Y#,EntityZ(player) End Function Function Sprung() If Zeitpunkt%=0 Then Zeitpunkt% = MilliSecs() EndIf If Zeit% < MilliSecs() Then Zeit% = MilliSecs() +300 If MilliSecs() < (Zeitpunkt% +1500) Then Y#=Y#+.5 ElseIf MilliSecs() > (Zeitpunkt% +1500) Then Y#=Y#-.5 EndIf EndIf If Y# < 2 Then Y#=2 End Function |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
jetzt ist alle klar,
das erste Springen startet, weil der Timer ZeitPunkt% noch auf 0 ist. Und genau den vergisst Du am Ende nach der Landung wieder auf 0 zu setzen. BlitzBasic: [AUSKLAPPEN] ... Fraglich ist auch, ob das Springen wirklich nur solange stattfinden sollte, wie der Spieler die SPACE-Taste drückt... Was, wenn der Spieler losläßt, bevor wieder gelandet wurde. Ich denke der Landungs-Prozess muss auf jeden Fall unabhängig von der SPACE-Taste zuende gebracht werden, oder? Ich würde es so lösen: Der Druck auf die SPACE-Taste startet den Timer, das Loslassen der SPACE-Taste löst die Umkehr zur Landung aus. Die Bodenberührung (IF Y=2) beendet den ganzen Spuk, reseten alles, sodass ein neuer Sprung ausgelöst werden könnte. BlitzBasic: [AUSKLAPPEN] ... |
||
Stani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok dankesehr ,dass ihr schreibt ![]() Hab jetzt springen angepasst und so gemacht,das man nicht immer die Space taste drücken muss. Aber irgendwie geht das mit der Collision nicht,also wenn ich auf eine "Testbox"(cube) springe bleibt der nicht oben,sondern geht durch diew Box nach unten. Woran kann das liegen?? |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hat denn die TestBox schon einen EnityType? Checkst du schon irgendwo diese spezielle Kollision? | ||
Stani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja alles hat i Moment eine Kollision.Ich hab zum player entitytype 1 und zu den anderen 2.Um den playe mach ich ein Radius und um die anderen eine entitybox.
Alles funzt ja ,außer von oben. Ich hab da stehen Collisions 1,2,2,2 Das komische ist,man kann ja bei einer Entitybox höhe,breite,tiefe eingeben.Wenn ich das mache ist das egal ob ich 100,100,100 oder 1,1,1 eingeben ,der bleibt immer am Objekt stehen. |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
so wie ich das sehe, ist ccoll die Variable, die Du bei der Collisionserkennung für den Cube verwendest? und pcoll für den Player? Aber beide sind "1"? Das kann nicht gut gehen!
Und ich sehe nirgends einen EntityBox für den Cube oder einen EntityType. Zeige mir mal diese Stellen im Code. Oder ist "Wand" deine TestBox? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group