[英]Jumping with quadratic equation -JAVA
package util;
import org.newdawn.slick.Input;
public class Motion {
static double origin,speed;
static double playerX=100,playerY=520, calcY;
static boolean jump=false;
static int x=0;
public static void setSpeed(double speed){
Motion.speed=speed;
}
public static void startMotionDetect(Input input, int delta){
input.isKeyDown(Input.KEY_SPACE);
if(input.isKeyDown(Input.KEY_SPACE))// <<Needs to be worked with depending on where the platform is.
jump=true;
if(input.isKeyDown(Input.KEY_RIGHT)&&playerX+delta*speed<=400)
playerX+=delta*speed;
if(input.isKeyDown(Input.KEY_LEFT)&&playerX-delta*speed>=0)
playerX-=delta*speed;
if (jump)
jump(delta);
}
private static void jump(int delta) {
playerY=QuadCalc.getY(.00038261911, -.6764705882, 520, x);
if(x<=1768)
x+=24;
else if(x>=1768){
jump=false;
x=0;
playerY=520;
}
}
public static double getPlayerX(){
return playerX;
}
public static double getPlayerY(){
return playerY;
}
}
package util;
import java.math.*;
public class QuadCalc {
static double a, b, c, x, y;
public static double getY(double a, double b, double c, double x){
y=a*Math.pow(x, 2)+b*x+c;
return y;
}
}
我正在嘗試根據我創建的二次方程(.00038261911x ^ 2-.6764705882x + 520)來使角色跳躍。 問題是我不知道如何像我左右移動一樣在移動角色的過程中利用增量。 我試圖創建一個單獨的變量來保存四邊形公式的計算值,而不是playerY- = delta * speed; 直到達到計算值。 這沒有用,因為增量會使價值過高膨脹。 有沒有人有任何想法將增量與我擁有的跳躍方法結合在一起?
PS:如果需要更多信息,請告訴我D:
二次方程式表示在給定一定的加速度和起始速度的情況下從時間開始計算位置。 在這種情況下,甚至不需要計算增量,您只需要在公式中插入時間即可得到當前位置。
舉例來說,如果您以可變速率加速或執行其他類似任務,則增量確實很重要。
但是,如果您真的想知道,要找到增量,您需要采用公式的導數,或者更好的是采用離散導數。 給定a * x ^ 2 + b * x + c,二次的導數為2a * x + b。 那應該是你的三角洲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.