Sprungfunktion / Gravity
Übersicht

![]() |
DottakopfBetreff: Sprungfunktion / Gravity |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() 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()
[/size][/size]
;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 |
||
- Zuletzt bearbeitet von Dottakopf am Di, Jan 02, 2007 23:28, insgesamt 2-mal bearbeitet
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstmal gehört das in Beginners Corner ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 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 ? ![]() 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. |
||
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ä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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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) .... ![]() Danke das du dir so zeit für mich nimmst |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
![]() |
the FR3AK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: warum camera runter bewegen ??
Weil er von einem Ego shooter ausgeht(?)Aber da müsste man dann den KameraPivot runter bewegen ![]() |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
![]() |
pixelshooter |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich hab das jetz nur überflogen aber warum benutzt ihr keine "richtige" beschleunigung? | ||
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
~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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie mache ich eine "richtige" beschleunigung ? ![]() |
||
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Geh in eine Bibliothek und leih Dir ein Physikbuch aus. | ||
Play Satyr! |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group