【发布时间】:2014-12-19 13:13:57
【问题描述】:
我想创建一个无限弹跳的球。现在我只是想在 Y 上弹跳(上下)。
这是我的 GameWorld 类,你可以看到有一个方法 collides 来检测碰撞,但是如何制作那个 "circle"上去?
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 来渲染这两个对象
【问题讨论】:
-
添加一个 vy 变量,将其初始化为 1。而不是 'rond.y++' 使用 'rond.y += vy'。碰撞后,将 vy 设置为 -1。 x 也一样。
-
这样的?私人 vy = 1; (...) if(碰撞(rond)){ vy = -1; }else rond.y += vy;