1

我需要用户能够拖放几张图片(精灵)。但是,我不希望它们相互重叠。我打算在“onTouchEnded”方法中添加一些东西,但不知道该怎么做。

首选方法是仅将两个精灵的重叠部分更改为红色。但是,如果这不可能,我们也可以将两个精灵都更改为红色。

我尝试使用 sprite.color = ccRED。但它把整个精灵变成了红色而不是有色的。

顺便说一句,这两个精灵都是常规尺寸。

4

1 回答 1

0

简单的方法是你可以检查两个精灵的碰撞

if( CGRectIntersectsRect( [sprite1 boundingBox], [sprite2 boundingBox] ) ) {
   // Handle overlap
}

你这个逻辑在你的情况下:

我也从这个链接得到它。

是的,它应该……虽然它可能看起来有点奇怪,这取决于你的精灵的形状。您还可以尝试测试距离,如果您的精灵更圆形,则效果更好:

// This is how close the sprites have to be for the game to think that they're colliding
// (or overlapping). Use a smaller value than 0.5 if you want them to be closer together
// in order for there to be a collision.
float distanceForCollision = (sprite1.contentSize.width * 0.5) + (sprite2.contentSize.width * 0.5);

// This is how close the sprites actually are
float actualDistance = ccpDistance( sprite1.position, sprite2.position );

// Check if they're close enough
if( actualDistance <= distanceForCollision ) {
// Handle overlap
}

这两种方法都非常有效,但就像我说的……它可能看起来有点奇怪,具体取决于形状。使用任何一种方法测试与星形精灵的碰撞/重叠都会看起来有点奇怪。不过,对于菜单和拖放,它应该足够了。

于 2013-09-07T13:22:26.637 回答