Sprungfunktion / Gravity

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.

Dottakopf

Betreff: Sprungfunktion / Gravity

BeitragDi, Jan 02, 2007 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
HI erstmal ! (Nachtrag: lösung zum jumpen wurde gefunden)

Da es mein erster Eintrag auf dieser Seite ist bitte ich um verständniss sollte dieser Eintrag im falschen Bereich gepostet worden sein.

O.K. wie schon gesagt geht s um ne gescheite Sprungfunktion bzw. die dazugehörige Gravity. Des mit dem Springen funzt scho ganz gut ( auch wenn nicht gut ausssieht) ^^ aber mein Problem ist, dass ich in der Luft erneut Springen kann und so in unendliche Weiten der Atmosphäre bzw. des All s vorstoßen kann. Very Happy . Das ist aber nicht Sinn und Zweck.

So meine Frage: was muss ich tun damit ich nicht währed des Sprunges erneut springen kann. (auch nicht wenn ich von einen Turm springe/falle) ??

Hier ist mein aktueller Code dazu :
Für eure Hilfe danke ich schon mal im vorraus !!!

Code: [AUSKLAPPEN]
Function dojump()

;sprung starten
If KeyHit(57) Then
   jump = True

End If

;des ganze ausführen /  jumphohe  = max. Sprungkraft
If jump = True Then

   jump_hohe = jump_hohe +1

  MoveEntity player,0,0.05,0

End If

;wenn max hohe erreicht dann fallen
If jump_hohe >= 15 Then
   jump = False
   jump_hohe = 0
 
End If

If jump = False Then
   MoveEntity player,0,-0.05,0 ; eine Art "gravity"
End If


End Function
[/size][/size]
  • Zuletzt bearbeitet von Dottakopf am Di, Jan 02, 2007 23:28, insgesamt 2-mal bearbeitet

Blitzcoder

Newsposter

BeitragDi, Jan 02, 2007 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If KeyHit(57) and not Jump Then
   jump = True

End If
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)

the FR3AK

BeitragDi, Jan 02, 2007 21:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal gehört das in Beginners Corner Wink

Zweitens:

Code: [AUSKLAPPEN]
Function dojump()

;sprung starten
If KeyHit(57) Then
   jump = True

End If

;des ganze ausführen /  jumphohe  = max. Sprungkraft
If jump = True Then
if entitycollided(Player,Objekt/Spielwelt) then

   jump_hohe = jump_hohe +1

  MoveEntity player,0,0.05,0

End If

;wenn max hohe erreicht dann fallen
If jump_hohe >= 15 Then
   jump = False
   jump_hohe = 0
 
End If

If jump = False Then
   MoveEntity player,0,-0.05,0 ; eine Art "gravity"
End If

end if
End Function


Ich hab das jetzt einfach mit Entitycollided gemacht^^

Dottakopf

BeitragDi, Jan 02, 2007 22:06
Antworten mit Zitat
Benutzer-Profile anzeigen
WoW das ging schnell (sry für den Foren fehler, aber etz weis ich s)

Danke für die raschen antworten. hmm des mit dem

Code: [AUSKLAPPEN]
;sprung starten
If KeyHit(57) And Not jump Then

   jump = True

End If


sicher dass des so stimmt, bb zeight an : Exeptin expression oder so Rolling Eyes

Auch gibt es folgenden fehler :



Code: [AUSKLAPPEN]

;des ganze ausführen / mit jumphohe max. Sprungkraft festlegen

If jump = True Then
If  EntityCollided(Player,objekt/terrain) Then

   jump_hohe = jump_hohe +1
 
MoveEntity player,0,0.05,0

End If



vielleicht meinst du " if jump = true and entitycollided...() then
denn so wird ja rein theoretisch geprüft ober der jump = true is und der boden bzw. die Scenerie berührt wird.
und nochwas mit : " If EntityCollided(Player,objekt/terrain) Then meinst du da das gleiche ? Embarassed

Ich schreib mal noch n paar sachen dazu die das ganze vielleicht erleichtern
- also mein player ist ne sphere (ihr hab ich den type :" type_player zugewiesen)
- und ich hab ein einfaches Terrian erstellt ( des ding heißt terrain und hat den "typenamen" : "type_scene")

Ich hoffe das hilft.

Blitzcoder

Newsposter

BeitragDi, Jan 02, 2007 22:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Huch, du hast Recht, das schafft BB so nicht. Komisch. Dann mach draus. and jump=false.
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)

Dottakopf

BeitragDi, Jan 02, 2007 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
ähmm ja aber da bringt doch nichts da sobalt meine max. Sprunghöhe erreicht ist der jump = false gesetzt wird und ich dan ja wieder jumpen kann. ^^

the FR3AK

BeitragDi, Jan 02, 2007 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
If EntityCollided(Player,objekt/terrain) Then meinst du da das gleiche


Ich meine damit die Kollisionsvariable zwischen Player und dem Gegenstand den du berührst!

Also bei dir is das dann:
Code: [AUSKLAPPEN]

if entitycollided(sphere,type_scene)then
...
end if



Du musst eine Gravitation setzen die die ganze Zeit da ist sonst kollidieren Boden und Player nicht immer also z.B.
Code: [AUSKLAPPEN]

Translateentity sphere,0,-10,0

Dottakopf

BeitragDi, Jan 02, 2007 22:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab doch schon ne Gravitation. Ich habs mal ander Probiert.
- erst prüfen ob er am boden ist
- dann erst ermöglichen den sprung auszuführen
- des mit dem runterkommen lass ma mal noch

Gut ich hab so probiert (is des mit entitycollided richtig, also was ich eingesetzt habe) ?

Code: [AUSKLAPPEN]
Function dojump() 

;hier soll geprüft werden ober er mit boden ( terrain ) kollidiert / wenn ja dan erlaubnis um zu springen
If EntityCollided(player,type_scene) Then jumperlaubnis = True

;wenn erlaubnis = true dan  auch jump = true setzten
If KeyHit(57) And jumperlaubnis= True Then
   jump = True
End If

;wenn jump = true springen
If jump = True Then
MoveEntity player,0, 0.5,0
End If


;die Graviti (damit er den boden irgendwann mal berührt)
TranslateEntity player,0,-0.3,0

End Function


ahh etz gehts sry ( bearbeitet) .... Laughing


Danke das du dir so zeit für mich nimmst

Dottakopf

BeitragDi, Jan 02, 2007 22:50
Antworten mit Zitat
Benutzer-Profile anzeigen
HAA Oh mein gott es funtzt ^^

Das hoch springen und runter fallen ( ohne einen zwischen Sprung um so die tiefen des alls zu erforschen ^^)

Ich habs etza so gelöst:
Code: [AUSKLAPPEN]

Function dojump() 

;hier soll geprüft werden ober er mit boden ( terrain ) kollidiert / wenn ja dan erlaubnis um zu springen
If EntityCollided(player,type_scene) Then jumperlaubnis = True

;wenn erlaubnis = true dan  auch jump = true setzten
If KeyHit(57) And jumperlaubnis= True Then
   jump = True
 
End If

;wenn jump = true springen
If jump = True Then

     jump_hohe = jump_hohe +1
     MoveEntity player,0, 0.5,0

End If

;wenn max. Sprungkraft erreicht den jump = false setzten
If jump_hohe >= 20 Then
    jump = False
    jumperlaubnis = False
    jump_hohe = 0
End If


;die Graviti (damit er den boden irgendwann mal berührt)
TranslateEntity player,0,-0.3,0

End Function


Boa danke, danke !!!


etza Klapt zwar das aber da kommt scho ein neues Problem:

- ich hab mit Milkshape ne kleine Testrampe gemoddelt und wenn ich da nu hoch latschen will verhindert das die Graviti da sie mich zu stark nach unten zieht.

gibts da ne einfache lösung ?

the FR3AK

BeitragDi, Jan 02, 2007 23:06
Antworten mit Zitat
Benutzer-Profile anzeigen
jo...
müsste mit...

Code: [AUSKLAPPEN]

if entitycollided(player,type_scene) then
translateentity player,0,0,0
else if not entitycollided(player,type,scene) then
translateentity player,0,-10,0
end if


...gehen Wink

Dottakopf

BeitragDi, Jan 02, 2007 23:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo danke ! hast mir echt geholfen!

hab auch ne funktionierende Lösung gefunden (hab einfach 2 gravities gemacht eine für fallen und eine für treppen / rampen steigen)

setzte zum Schluss noch mal die Jump funktion rein für diejenigen die das geliche Problem hatten. Hoffe kann so helfen.

Code: [AUSKLAPPEN]

Function dojump() 

;hier soll geprüft werden ober er mit boden(terrain) kollidiert / wenn ja
;dan erlaubnis um zu springen
If EntityCollided(player,type_scene) Then
     jumperlaubnis = True
Else
    jumperlaubnis = False
End If


;wenn erlaubnis = true dan  auch jump = true setzten
If KeyHit(57) And jumperlaubnis= True Then
   jump = True
 
End If

;wenn jump = true springen
If jump = True Then

     jump_hohe = jump_hohe +1
     MoveEntity player,0, 0.5,0

End If

;maximale Sprunghöhe
If jump_hohe >= 10 Then
    jump = False
    jumperlaubnis = False
    jump_hohe = 0
   
End If

;sollte keine jumperlaubnis bestehen dann schnell fallen falls doch junperl.dann langsam fallen
;Effekt : sollte man von einem Turm zB. fallen / fälllt man schnell  und rampen kommt man auch hoch (zusätzlich leichter rutsch effekt
;bei starken Neigungen)

If jumperlaubnis = False Then
   TranslateEntity player,0,-0.3,0 ; schnelle gravity
Else
   TranslateEntity player,0,-0.03,0 ; langsame gravity
End If

End Function


Jetzt bastle ich mal dran rum den jump mal "schicker" zu machen (um so länger der fall umso schneller fällt der player usw.)

Also danke nochmal !
  • Zuletzt bearbeitet von Dottakopf am Mi, Jan 03, 2007 0:20, insgesamt 2-mal bearbeitet
 

Todeskop

BeitragDi, Jan 02, 2007 23:20
Antworten mit Zitat
Benutzer-Profile anzeigen
ich weiß ja nicht ob der entitydistance befehl leistungsaufwändiger ist als if not entitycollide aber wenn nicht dann gings auch so:

Code: [AUSKLAPPEN]
If EntityDistance((player,type_scene)>1 TranslateEntity camera,0,-10,0   else translateentity player,0,0,0   
end if


...falls das mit dem else nicht geht machstes einfach so:


Code: [AUSKLAPPEN]
If EntityDistance((player,type_scene)>1 TranslateEntity camera,0,-10,0   
If EntityDistance((player,type_scene)<1 TranslateEntity camera,0,0,0   
end if

Dottakopf

BeitragDi, Jan 02, 2007 23:24
Antworten mit Zitat
Benutzer-Profile anzeigen
warum camera runter bewegen ??

mein player is (zum test) eine sphere und die camera wurde auf sie gerichtet mit

camera = createcamera(player)

ich dachte da eher an sowas:
Code: [AUSKLAPPEN]

jump_y# = jump_y# +0.05
   TranslateEntity player,0,-jump_y#,0 ; schnelle gravity


geht aber nur bedingt ( schaut schon nach sprung aus aber er fällt wie ein nasser Sack Surprised )

the FR3AK

BeitragDi, Jan 02, 2007 23:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
warum camera runter bewegen ??


Weil er von einem Ego shooter ausgeht(?)Aber da müsste man dann den KameraPivot runter bewegen Wink

Dottakopf

BeitragDi, Jan 02, 2007 23:46
Antworten mit Zitat
Benutzer-Profile anzeigen
K. A vielleicht hab ich des falsch gelesen (bin ja doch no ned fit) ^^

weil du geschrieben hast translateentity camera 0,-10,0

Code: [AUSKLAPPEN]

If EntityDistance((player,type_scene)>1 TranslateEntity [u]camera[/u],0,-10,0   
If EntityDistance((player,type_scene)<1 TranslateEntity camera,0,0,0   


aber so :

Code: [AUSKLAPPEN]

  jump_y# = jump_y# +0.04
   TranslateEntity player,0,-jump_y#,0 ; schnelle gravity


funtz des au. Doch der richtige Effekt (übergang zwischen hochfliegen und runterkommen) kommt leider nur auf höheren entfernungen gut raus und nachdem ich meinen player eher "normal hoch " springen lassen will ist das alles n bisschen ruckartig.

Aber besser als vorher allemal Surprised

pixelshooter

BeitragMi, Jan 03, 2007 11:15
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab das jetz nur überflogen aber warum benutzt ihr keine "richtige" beschleunigung?
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc

BladeRunner

Moderator

BeitragMi, Jan 03, 2007 12:32
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.
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

Dottakopf

BeitragMi, Jan 03, 2007 12:47
Antworten mit Zitat
Benutzer-Profile anzeigen
wie mache ich eine "richtige" beschleunigung ? Embarassed

DerHase

BeitragMi, Jan 03, 2007 12:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Geh in eine Bibliothek und leih Dir ein Physikbuch aus.
Play Satyr!

Dottakopf

BeitragMi, Jan 03, 2007 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Sry aber so eine Anwort kannst du dir echt Sparen. Da du zum einen garnicht versuchst mir bzw. den anderen Beobachtern zu helfen die sich für dieses Thema interesieren.

Und zum zweiten müllst du dieses Forum mit solch einem Eintrag zu, denn ich denke mal jeder hier wäre darauf gekommen sich n Buch in ner Bücherrei zu besorgen !

Gehe zu Seite 1, 2  Weiter

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group