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 に答える