如何在Java中进行碰撞检测

2020年6月8日 12点热度 0条评论

我正在尝试在cocos2d for android的java中进行共谋检测,这是我拥有的代码

float oldx = player.getPosition().x;
float oldy = player.getPosition().y;
if((player.getPosition().y + player.getContentSize().height > building1.getPosition().y) &&
   (player.getPosition().y < building1.getPosition().y + building1.getContentSize().height) && 
   (player.getPosition().x + player.getContentSize().width > building1.getPosition().x) &&
   (player.getPosition().x < building1.getPosition().x + building1.getContentSize().width))
{
    player.setPosition(CGPoint.ccp(oldx, oldy));
}

但是由于某种原因它不起作用...为什么呢?

解决方案如下:

您分别将oldxoldy设置为player.getPosition().xplayer.getPosition().y。您在碰撞检测if语句中使用的检查完全相同,因此实际上是将位置设置为原来的位置。

在检查是否发生碰撞之前,您需要知道玩家想要移动到的位置,然后才不允许玩家移动到那里(即,不要更新他们的X和Y)。