2017-12-16 19 views
1

私は数学ではそれほど大きくはありませんが、私が達成しようとしているのはスプライトをそれに適用されるベクトルインパルスの方向に回転させることです。私は私のスプライトの下にタップすると私のゲームは、私がこれをやっているなどなど、それは私が私のスプライトの下と右にタップすると、それは上向きにして、左に行く、上向きになっ2Dスプライトをベクトルの方向に回転させる

ですスプライトと私のタップの位置の違いから得たスプライトに、正規化されたベクトル(単位ベクトル?)のインパルスを適用するだけです。

let x = (ball.position.x - location.x) 
let y = (ball.position.y - location.y) 

let vectorLength = sqrt((x*x) + (y*y)) 
// Ignore constants 
let unitVector = CGVector(dx: (x/vectorLength) * 25, dy: (y/vectorLength) * 50) 

ball.physicsBody!.applyImpulse(unitVector) 

ここで達成したいのは、スプライトをそのベクトルの方向に回転させる機能です。

たとえば、スプライトが45度の角度で左に移動している場合、スプライトを反時計回りに45度回転させてベクトルを使用して、その方向に向いているように見えるようにするには?

答えて

3

何かsprite.zRotation = atan(unitVector.dy, unitVector.dx)

+0

「atan2」のマイナーな誤植だと思いますか? – Tommy

関連する問題