我需要用户能够拖放几张图片(精灵)。但是,我不希望它们相互重叠。我打算在“onTouchEnded”方法中添加一些东西,但不知道该怎么做。
首选方法是仅将两个精灵的重叠部分更改为红色。但是,如果这不可能,我们也可以将两个精灵都更改为红色。
我尝试使用 sprite.color = ccRED。但它把整个精灵变成了红色而不是有色的。
顺便说一句,这两个精灵都是常规尺寸。
我需要用户能够拖放几张图片(精灵)。但是,我不希望它们相互重叠。我打算在“onTouchEnded”方法中添加一些东西,但不知道该怎么做。
首选方法是仅将两个精灵的重叠部分更改为红色。但是,如果这不可能,我们也可以将两个精灵都更改为红色。
我尝试使用 sprite.color = ccRED。但它把整个精灵变成了红色而不是有色的。
顺便说一句,这两个精灵都是常规尺寸。
简单的方法是你可以检查两个精灵的碰撞
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
}
这两种方法都非常有效,但就像我说的……它可能看起来有点奇怪,具体取决于形状。使用任何一种方法测试与星形精灵的碰撞/重叠都会看起来有点奇怪。不过,对于菜单和拖放,它应该足够了。