所以我有一个每秒创建的精灵,它在随机位置(sprite1)和另一个具有固定位置的精灵(sprite2)移动。我希望当 sprite1 与 sprite2 碰撞时,sprite1 就像粘在它上面(它停止移动并粘在它上面)。请问我该怎么做?对不起我的英语我是法国人:/
ps:sprite2 与加速度计一起旋转,所以如果 sprite1 与它发生碰撞,我希望它也旋转 :)
所以我有一个每秒创建的精灵,它在随机位置(sprite1)和另一个具有固定位置的精灵(sprite2)移动。我希望当 sprite1 与 sprite2 碰撞时,sprite1 就像粘在它上面(它停止移动并粘在它上面)。请问我该怎么做?对不起我的英语我是法国人:/
ps:sprite2 与加速度计一起旋转,所以如果 sprite1 与它发生碰撞,我希望它也旋转 :)
如果你不想使用 Box2d(它可以处理圆形碰撞),你可以尝试这样的事情:
1.)检测碰撞,是两个圆中心点(x,y)之间的距离,小于两个圆半径之和。
2.) 让 Sprite1 粘在 Sprite2 上,停止 Sprite1 的移动,并将相对 delta (x,y) 保存到 Sprite2,然后每当 Sprite2 移动或旋转时,对 Sprite1 应用相同的 delta 移动和旋转。
我认为,您可以尝试使用 box2d 来执行此操作。它将有助于检测碰撞并管理旋转、移动等。
我认为,你可以在 Cocos2d 中简单地做到这一点。
1)首先使用为 sprite1 和 sprite2 设置矩形CGRectMake(x,y,width,height)
2)正如您所说 sprite1 在随机位置移动而 sprite2 固定在特定位置,您可以使用CGRectIntersectsRect([sprite1 bounds],[sprite2 bounds])
.
3)如果相交,设置sprite1.position = sprite2.position
注意:你说 sprite1 是旋转的,rect 只能适合常规体。如果你想要更好的精灵的精确碰撞或物理属性,你可以选择 box2d。