在Java中反弹对象关闭墙/反转速度

时间:2014-05-30 11:18:04

标签: java

我有一个速度为-5的物体朝向墙壁。当它撞到墙壁时,我希望它获得5的速度,从而反转方向和反弹。但是,当我运行它时,它无法正常工作。我已经使用了几种变体,我想我正在犯一个语法错误。

public void action(int t) {
   setVY(-5);              //works - no surprises sets velocity to -5
      .
      .

if(getY() <= 0 ) {


       setVY(5);          //THIS METHOD DOESN'T WORK

       setVX(5);           // works no surprises , ball goes right

       hooks.setMessage("hits wall", 25);   //no surprises
        }

}

这样编译运行没有错误。该物体现在向北移动,然后以45度向北/向东转向。

2 个答案:

答案 0 :(得分:1)

对不起,我无法对你的问题发表评论,因为我使用的是应答机构。你可以更具体地说明什么是无效的。你认为vy是错误的还是setter setVY没有为你的对象设置正确的值?或者是不同的东西不起作用?

正如Gilbert上面提到的:你为什么要比较y和5?在某些情况下,y永远不会是5个小于或小于5的东西。对象已经是一小部分&#34;内部&#34;墙壁,你仍然希望物体改变方向和反弹......

再见 马库斯

答案 1 :(得分:1)

这很有效。虽然它可能不像你期望的那样工作。在再次检查位置之前,您还记得将速度添加到位置吗?如果没有,getY()仍然会返回5,它将再次翻转yv的符号(所以它的回复方式)。您可以编写一个小单元测试来确认这是有效的。

由于您的示例不起作用,很难确切地说出错误,但如果您使用正确的数据提供算法,它将翻转y速度的符号。