是否可以阻止我的CCSprite离开屏幕?我已经允许它在左侧和右侧离屏,所以这很好,但我只是想阻止它从顶部和底部的屏幕上移开。
到目前为止,我所做的只是让精灵卡在顶部或底部。我不希望这会影响精灵的运动,我想要发生的只是CCSprite在它击中顶部或底部时会停止。
有人能告诉我怎么做吗?
谢谢!
修改:
CGSize size = [[CCDirector sharedDirector] winSize];
if ((sprite.y <= size.height) && (sprite.y >= 0) ) {
// Set new position
} else {
// sprite is colliding with top/bottom limits, do whatever you like, for example change direction
}
答案 0 :(得分:4)
要限制边界内的精灵,请不要检查当前位置,而是检查新位置。但是,您可以使用钳制方法,而不是使用(可能是多个)if
条件:
技术1 - 使用MIN
和MAX
组合:
CGPoint newPosition = ... (assign new position here using touch location or something)
sprite.position = ccp(newPosition.x, MAX(0, MIN(size.height, newPosition.y)));
技术2 - 使用clampf
:
CGPoint newPosition = ... (assign new position here using touch location or something)
sprite.position = ccp(newPosition.x, clampf(newPosition.y, 0, size.height));
答案 1 :(得分:2)
CGSize winSize = [[CCDirector sharedDirector] winSize];
CCSprite* sprite = [CCSprite node];
CGSize spriteSize = sprite.boundingBox.size;
if ((sprite.position.y + spriteSize.height/2 < 0 )||(sprite.position.y + spriteSize.height/2 > winSize.height) ) {
//Sprite is out of screen
}
未经测试,但由于您的锚点位于0.5,0.5作为标准,这应该适合您