2

是否可以防止我的 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

}
4

2 回答 2

4

要将精灵限制在边界内,请不要检查当前位置,而是检查新位置。if但是,您可以使用钳位方法,而不是使用(可能是多个)条件:

技术 1 - 使用MINMAX组合:

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));
于 2012-01-04T14:26:31.500 回答
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 作为标准,这应该适合您

于 2012-10-22T19:03:54.653 回答