我有一个测试程序,用于构建游戏的开始。
我在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())
{
}
}
答案 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;在边缘处,由于过度拍摄,三角洲被重复翻转。