1

所以我有一个每秒创建的精灵,它在随机位置(sprite1)和另一个具有固定位置的精灵(sprite2)移动。我希望当 sprite1 与 sprite2 碰撞时,sprite1 就像粘在它上面(它停止移动并粘在它上面)。请问我该怎么做?对不起我的英语我是法国人:/

ps:sprite2 与加速度计一起旋转,所以如果 sprite1 与它发生碰撞,我希望它也旋转 :)

4

3 回答 3

0

如果你不想使用 Box2d(它可以处理圆形碰撞),你可以尝试这样的事情:

1.)检测碰撞,是两个圆中心点(x,y)之间的距离,小于两个圆半径之和。

2.) 让 Sprite1 粘在 Sprite2 上,停止 Sprite1 的移动,并将相对 delta (x,y) 保存到 Sprite2,然后每当 Sprite2 移动或旋转时,对 Sprite1 应用相同的 delta 移动和旋转。

于 2012-04-30T17:05:22.460 回答
0

我认为,您可以尝试使用 box2d 来执行此操作。它将有助于检测碰撞并管理旋转、移动等。

于 2012-04-23T04:59:17.253 回答
0

我认为,你可以在 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。

于 2012-04-23T05:09:51.083 回答