你如何让你的精灵在屏幕上反弹屏幕边缘?

时间:2017-02-06 22:16:30

标签: java velocity 2d-games

我有一个测试程序,用于构建游戏的开始。

我在if语句中遇到了速度属性的问题,这些属性应该在屏幕的精灵上产生反弹效果,但我似乎无法得到正确的组合。一直在努力工作,似乎无法取得任何进展。任何帮助将不胜感激。

在旁注中,在else if方法中有一个名为getWidth和getHeight的属性,这应该是获取屏幕的高度和宽度。但我不确定它是否确实如此。如果需要,我可以附上该课程。但是下面我将添加我尝试创建屏幕边缘的“反弹”效果的方法。

public void checkScreenEdge(Sprite s){
    if (s.getX() > getWidth()){

    }
    else if (s.getX() + s.getWidth() >= getWidth());
    {

    }

    if (s.getY() > getHeight()) {

    }
    else if (s.getY() + s.getHeight() >= getHeight())
    {

    }
}

1 个答案:

答案 0 :(得分:1)

如果您使用deltaX和deltaY值(或速度值)来决定移动哪个方向,只需在适当的位置将值从正值更改为负值,反之亦然。例如:

if (s.getX() <= 0) {
   s.setDeltaX(Math.abs(s.getDeltaX());
} else if (s.getX() + s.getWidth() >= MAX) {
   s.setDeltaX(-Math.abs(s.getDeltaX());
}

我觉得使用绝对值而不是直接交换deltaX值很重要,因为如果你这样做了:

if (s.getX() <= 0) {
    s.setDeltaX(-s.getDeltaX());
}

你冒险精灵被困&#34;在边缘处,由于过度拍摄,三角洲被重复翻转。