1

さて、プレイヤー(宇宙船)が惑星の周りを回ろうとしているゲームがありますが、プレイヤーの宇宙船が惑星に近づくと、惑星に向けられます。

だから私は使用しようとしています:

float dx = [_player position].x - [planetNodes[i] position].x;
float dy = [_player position].y - [planetNodes[i] position].y;
double angleToTurn = (180.0 / M_PI)  * atan2(dy, dx);
NSLog(@"Turn to: %f", angleToTurn);
_player.zRotation = angleToTurn;

このコードは、シーンの更新メソッドに入れられます。回転メソッドを使用しているため、プレイヤーが惑星に近づきすぎると、惑星が回転し始めます。setAngle のようなメソッドはありますか? そうすれば、更新が呼び出されるたびに角度がリセットされ、実際にプレーヤーが惑星に向かって移動しているように見えます。

4

2 に答える 2

1

角度を使用して回転させる

        [_player runAction:[SKAction rotateToAngle:atan2(dy, dx) duration:0.0 shortestUnitArc:YES]]

スプライトの動きがアニメーション化され、zRotation を設定するだけで見栄えが良くなります。

注: 関数はラジアンを使用するため、度数に変換する必要はありません。

于 2014-07-11T08:57:08.557 に答える