1

画面上のランダムなポイントにスプライトを作成するクラスがあり、このスプライトは画面の中央に移動します。

常に同じ速度で移動するようにするにはどうすればよいですか?

明らかに

CCMoveTo* move = [CCMoveTo actionWithDuration:5 position: ccp(screenWidth/2, screenHeight/2)];

距離に関係なく、継続時間は常に5秒であることを意味します。しかし、50ピクセルまたは500ピクセルを移動する場合は、速度を一定にしたいと思います。

どんな助けでも大歓迎

4

1 に答える 1

3

中心までの距離から期間を計算します。

duration = distance / rate;

5秒間に50ピクセル移動しても大丈夫だとしましょう。その場合、レートは10ピクセル/秒です。

rate = 10;

スプライトが(x、y)にある場合、距離はピタゴラスの定理による

dx = x - screenWidth / 2;
dy = y - screenHeight / 2;
distance = sqrt(dx * dx + dy * dy);
于 2012-11-18T00:07:00.643 に答える