Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android中的破砖游戏-检测命中(带破口的球)_Java_Android_Collision Detection_Collision - Fatal编程技术网

Java android中的破砖游戏-检测命中(带破口的球)

Java android中的破砖游戏-检测命中(带破口的球),java,android,collision-detection,collision,Java,Android,Collision Detection,Collision,我现在的代码是 private boolean checkHit2(int行、int列、Ball球){ //检查是否有来自下方的命中 if(ball.getTop()=此.getBrickTop(行)&& ball.getRight()>=this.getBrickLeft(col)&& ball.getLeft()=此.getBrickTop(行)&& ball.getBottom()=this.getBrickLeft(col)&& ball.getLeft()=此.getBrickTop(

我现在的代码是

private boolean checkHit2(int行、int列、Ball球){
//检查是否有来自下方的命中
if(ball.getTop()=此.getBrickTop(行)&&
ball.getRight()>=this.getBrickLeft(col)&&
ball.getLeft()=此.getBrickTop(行)&&
ball.getBottom()=this.getBrickLeft(col)&&
ball.getLeft()=此.getBrickTop(行)&&
ball.getRight()>=this.getBrickLeft(col)&&

ball.getLeft()您应该在checkhit2方法中使用synchronized,这样它将在与其他处理交错之前完成每个处理。

如果您的球比您的砖块小,并且您的更新速率不够好,则球有可能在砖块内移动,这将给出您描述的结果。如果在这种情况下,您可以:

  • 提高更新率(使球在更新前移动的距离 点击测试(较小),这仍然是一个问题的手机,有 低性能
  • 如果球完全在砖块内,则进行第三次测试 (这两种情况都是正确的)然后您需要根据 离开球的先前状态

祝你的游戏一切顺利!

这不是问题所在-我只有一个线程调用此方法。问题是线程循环中调用此方法的线程可能会频繁..谢谢。第一个建议对我来说不太好。关于第二个问题-yow写道“如果球完全在砖块内”-我所描述的问题也可能是,如果只是其中一个条件保持,我无法在不了解更多关于何时/如何调用checkHit方法的情况下为您提供更多帮助。尽管给出了您的意见,也许一个简单的解决方案是在检测到命中后立即移动球?或者,存储行/列列表n标识球在此帧中击中的位置,并检查当前行/列是否未进行测试?(我不建议使用此方法)。正如我所说的,我没有发现您的代码有任何特别的错误,因此可能您的问题在别处。祝您好运!:)