我想创建一个无限的弹跳球。现在,我只是想在Y上弹跳(上下)。
这是我的GameWorld类,您可以看到有一个碰撞方法来检测碰撞,但是如何使该“圆圈”上升呢?
public class GameWorld {
private Circle rond;
private Rectangle rect;
public GameWorld(int midPointY) {
rond = new Circle(100, midPointY - 5, 5);
rect = new Rectangle(0, 200, Gdx.graphics.getWidth(), 5);
}
public void update(float delta) {
if(collides(rond)){
}else
rond.y++;
}
public boolean collides(Circle rond) {
if (rect.y < rond.y + (rond.radius)*2) {
return (Intersector.overlaps(rond, rect));
}
return false;
}
public Circle getRond() {
return rond;
}
public Rectangle getRect() {
return rect;
}
}
当然,我还有另一个渲染这两个对象的类GameRenderer
最佳答案
通常,对于任何种类的物理学,您都希望存储对象的速度及其位置。这样,每次更新循环时,您只需要按y速度更改y位置即可。发生冲突时,您要做的就是计算新的yspeed
并更新rond
。
public void update(float delta) {
if(collides(rond)){
rond.yspeed = -rond.yspeed;
}else{
rond.y+=rond.yspeed*delta;
}
}