Sprungbewegung
Übersicht

LorDtaiBsnBetreff: Sprungbewegung |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo Leute, helft mir mal.
Ich bin gerade dabei, meine Sprungbewegungen zu optimieren. Der Code sieht im Moment so aus: BlitzBasic: [AUSKLAPPEN]
Meine Kamera (bzw. mein Player) wird jetzt zwar nach oben versetzt, aber mithilfe der Gravitation: BlitzBasic: [AUSKLAPPEN] Grav = Grav - 1 wieder runtergezogen. Sieht aber alles total abgestockt aus. Gibt es eine Art Berechnung, mithilfe derer ich die Kamera langsamer hoch- bzw. runterkommen lassen kann? |
||
Kruemelator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Benutz eine Variable für die Auf- und Abbewegung, z.B. "ymove#". Mach das selbe wie bei "Grav" als immer etwas abziehen (jenachdem wie groß die Schwerkraft ist, nicht so wie bei dir genau 1, ist viel zu groß) und dann einfach Translate entity,x,ymove#,z.
Und beim Sprung einfach ymove# auf einen positiven Wert setzen, das lässt die Figur dann nach oben bewegen, sie wird aber immer langsamer und fällt irgendwann auch wieder. |
||
LorDtaiBsn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kruemelator hat Folgendes geschrieben: Benutz eine Variable für die Auf- und Abbewegung, z.B. "ymove#". Mach das selbe wie bei "Grav" als immer etwas abziehen (jenachdem wie groß die Schwerkraft ist, nicht so wie bei dir genau 1, ist viel zu groß) und dann einfach Translate entity,x,ymove#,z.
Und beim Sprung einfach ymove# auf einen positiven Wert setzen, das lässt die Figur dann nach oben bewegen, sie wird aber immer langsamer und fällt irgendwann auch wieder. Was heißt auf einen positiven Wert setzen? Soll ich einfach dann beim Sprung sagen ymove#=1? |
||
Kruemelator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja genau.
So würde das dann aussehen: Code: [AUSKLAPPEN] If KeyHit(57) Then
ymove# = 0.1 EndIf ymove# = ymove# - 0.01 If EntityCollided(camera,TER_COL) Then ymove# = 0 EndIf TranslateEntity camera,0,ymove#,0 |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also die Idee ist ja folgende....
Das gibt es die Entity und die bewegt sich mit einer bestimmten Y-Speed%: 0 wenn es nur waagrecht voran geht +0.01 bis 1 wenn es nach oben geht -0.01 bis -1 wenn es wieder nach unten geht Bei deinem aktivien Sprung wird ja Kraft nach oben erzeugt. Die steckst Du in die Speed z.b. BlitzBasic: [AUSKLAPPEN]
das geschieht nur 1x pro Sprung Die Gravitiy ist ja immer eine Kraft nach unten z.b. -0.1 das ziehst Du laufend von der YSpeed ab. jede 1/60-sec BlitzBasic: [AUSKLAPPEN] YSpeed = YSpeed-0.1
Die Y-Speed selber wirkt sich auch jede 1/60-sec auf die Entity aus BlitzBasic: [AUSKLAPPEN] TranlateEntity camera 0, YSpeed, 0 Dadurch wird sich jetzt deine Camera sehr natürlich (schwerkraftmäßig) bewegen: Zunächst geht es kräftig nach oben: Figur steht bei Höhe 0 Y Speed ist da 1 Figur steht bei Höhe 1 Die Gravitiy wirkt sich auf Y-Speed aus und macht den Zuwachs immer kleiner: Y-Speed ist dann 0.9 Figur steht bei Höhe 1.9 Y-Speed ist dann 0.8 Figur steht bei Höhe 2.7 .... Irgendwann ist Y-Speed dann 0 und die Figur schwebt einen Moment waagrecht Figur steht bei Höhe 5.5 Y-Speed ist dann 0.0 Figur steht bei Höhe 5.5 Dann macht die Gravity die Speed < 0 und das führt dazu, dass die Höhe abfällt Figur steht bei Höhe 5.5 Y-Speed ist dann -0.1 Figur steht bei Höhe 5.4 Y-Speed ist dann -0.2 Figur steht bei Höhe 5.2 .... Irgendwann ist der Boden erreicht. Dabei macht deine Figur eine Art Hyperbel durch, was sehr realistisch aussieht und fällt immer schneller. BlitzBasic: [AUSKLAPPEN] YSpeed# = 0 Du musst jetzt nur noch mit den Werten Kraft und Grav so lange rumspielen, bis es realistisch aussieht. Springt er zu hoch, reduzierst Du Kraft und stellst Grav aber sofort auch auf eine 1/10 von Kraft. Danach experimentierst Du mit dem 1/10-Verhältnis z.b. Bei Kraft=0.5 und Grav= 0.01 fliegt er schon ganz weich (1:50) |
||
- Zuletzt bearbeitet von Midimaster am Fr, Jan 15, 2010 12:52, insgesamt einmal bearbeitet
LorDtaiBsn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Verstehe, das macht Sinn. Jetzt erklärt sich auch, warum der vorher so abgehackt gesprungen is. Danke sehr ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group