我计划从原点(0,0)开始飞行气泡并跟踪路径,如下所示。但路径不是那么顺利。我可以看到y轴需要在Y轴上呈指数增长直到峰值并且它必须呈指数减小。您可以帮忙纠正以下代码,以获得这样的路径。
代码:
private void createBubbleForBurst() {
int coordCount= 0;
float tempRowCoord = 0;
float tempColCoord = 0;
//Q1 side Bubbles
while (!Q1BubbleCoordinatesDone){
if (coordCount<200){
tempColCoord = tempColCoord - colMovementIdx;
tempRowCoord = tempRowCoord + rowMovementIdx;
}else{
tempColCoord = tempColCoord - colMovementIdx - 0.3f;
tempRowCoord = tempRowCoord - rowMovementIdx + 0.3f;
if(coordCount>320){
Q1BubbleCoordinatesDone =true;
}
}
coordCount++;
Bubble b = new Bubble(BURST_BALL_WHITE,tempColCoord,tempRowCoord);
bubbleList.add(b);
}
}
使用此代码,我可以获得如下所示的路径
答案 0 :(得分:2)
您的代码存在的问题是您没有跟踪速度。重力作用意味着物体随着时间的推移而向地面加速。
private double height;
private double velocity;
static private double GRAVITY = -10.0;
public void tick(double elapsedTime) {
velocity += gravity * elapsedTime;
height += velocity * elapsedTime;
if (height < 0)
height = 0;
}
这将为您提供重力下运动的近似值(随着刻度之间的经过时间增加,精度会降低)。为简单起见,我忽略了水平移动,但您可以使用类似的技术来实现拖动。如果需要,很难从你的问题中判断出来。如果没有那么水平速度是恒定的。