Fa2*_*a2m 5 java animation sprite game-physics
我做了一个简单的代码来获得跳球位置,但我肯定错过了一些东西,因为我得到了这个:
这是获取x和y位置的代码:
public Vector2f[] draw() {
float x = 0, y = height; // height - float value from class constructor;
ArrayList<Vector2f> graphic = new ArrayList<Vector2f>();
for(;;){
Vector2f a = new Vector2f(x, y);
graphic.add(a);
ySpeed -= 10;
y += ySpeed*Math.cos(angle);
x += xSpeed*Math.sin(angle);
if(y <= 0){
// float coef = -10 * y / ySpeed;
// ySpeed = ((ySpeed + coef) * (-1) ) * bouncyness;
ySpeed = (ySpeed * (-1)) * bouncyness;
System.out.println(ySpeed + " " + y);
y = 0;
}
if(x > Main.width)
break;
}
Vector2f[] graphicArray = new Vector2f[graphic.size()];
for (int i = 0; i < graphic.size(); i++) {
graphicArray[i] = graphic.get(i);
}
return graphicArray;
}
Run Code Online (Sandbox Code Playgroud)
在其迭代中,y第一次运行时低于 X 轴。然后归零,
因此height您在该迭代中获得的最大值低于原始值height。
稍后也会发生同样的情况,
直到y将达到 0 而无需设置为它(我认为它总是会收敛到它)。
如果你将你的设置height除以10它应该看起来不错。
对于弹跳情况,更改if ( y <= 0)为if ( y<= 10 )并删除y = 0语句。
正确的情况(不弹跳),设置y = Math.abs(y)
| 归档时间: |
|
| 查看次数: |
256 次 |
| 最近记录: |