Ios Cocos2d iphone:更改两个精灵重叠部分的颜色
我需要用户能够拖放几个图片(精灵)。但是,我不希望它们相互重叠。我计划在“OnTouched”方法中添加一些内容,但不知道如何做 首选方法是仅将两个精灵的重叠部分更改为红色。但是,如果不可能,我们也可以将两个精灵都更改为红色 我试着用雪碧。但是它把整个雪碧变成了红色而不是有色的Ios Cocos2d iphone:更改两个精灵重叠部分的颜色,ios,cocos2d-iphone,Ios,Cocos2d Iphone,我需要用户能够拖放几个图片(精灵)。但是,我不希望它们相互重叠。我计划在“OnTouched”方法中添加一些内容,但不知道如何做 首选方法是仅将两个精灵的重叠部分更改为红色。但是,如果不可能,我们也可以将两个精灵都更改为红色 我试着用雪碧。但是它把整个雪碧变成了红色而不是有色的 顺便说一句,这两个精灵的大小都是规则的。简单的方法是你可以检查两个精灵的碰撞 if( CGRectIntersectsRect( [sprite1 boundingBox], [sprite2 boundingBox]
顺便说一句,这两个精灵的大小都是规则的。简单的方法是你可以检查两个精灵的碰撞
if( CGRectIntersectsRect( [sprite1 boundingBox], [sprite2 boundingBox] ) ) {
// Handle overlap
}
在您的案例中,您可以使用以下逻辑:
我也是从你那里得到的
是的,它应该……尽管它看起来有点奇怪,这取决于你的精灵的形状。您还可以尝试测试距离,如果精灵更圆,则测试效果更好:
//这就是精灵离游戏有多近,游戏才会认为他们在碰撞
//(或重叠)。如果希望它们更靠近,请使用小于0.5的值
//为了发生碰撞。
浮动碰撞距离=(sprite1.contentSize.width*0.5)+(sprite2.contentSize.width*0.5);
//这就是精灵的实际距离
浮动actualDistance=ccpDistance(sprite1.position,sprite2.position);
//检查它们是否足够近
if(首先是ActualInstance,谢谢。我曾尝试使用CGRectIntersectsRect,它可以检测碰撞。但在那之后,我尝试使用sprite.color=ccRED,整个图片变为红色,而我最初的注意力只是使它变红(如高亮显示)有什么方法可以做到这一点吗?我不想每次都更改精灵的图片(变为红色),因为我认为它可能不会节省内存。谢谢。
// 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
}