我正在尝试检测 cocos2d 游戏中角色和平台之间的碰撞。
整个游戏在一个类中运行,并以一种方法进行更新:在上一个问题中,据说一种更新方法与多种更新方法不会有性能差异。
这就是我检查碰撞的方式:
if(velY<=0)
{
if(_guy.position.x<child.position.x+child.contentSize.width/2 && _guy.position.x>child.position.x-child.contentSize.width/2)
{
if(velY/50<5)
{
if(((_guy.position.y - _guy.contentSize.height/2) - (child.position.y+child.contentSize.height/2))<abs(10) && ((_guy.position.y - _guy.contentSize.height/2) - (child.position.y+child.contentSize.height/2))>-4)
{
//some code
}
else if(((_guy.position.y - _guy.contentSize.height/2) - (child.position.y+child.contentSize.height/2))<abs(velY/50) && ((_guy.position.y - _guy.contentSize.height/2) - (child.position.y+child.contentSize.height/2))>=-4)
{
//some more of the same code as above
}
这样if(velY/50<5)
如果它移动缓慢,它就有一个大窗口,它可以在更大的范围内。
屏幕上的所有精灵都在移动,并且都包含在一大堆中。在更新方法中,我遍历批次的每个孩子,如果它在(主角)的范围内,x
它将把他设置在平台上。然而,有时当这家伙刚刚越过平台顶部时,它似乎错过了它,让他跌倒了。我猜这是因为检查每个平台需要很长时间?有一个更好的方法吗?y
_guy