2017-12-16 11 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도 반 시계 방향으로 45도 회전시켜 방향을 향한 방향으로 향하게합니다 ?

답변

3

sprite.zRotation = atan(unitVector.dy, unitVector.dx)과 같은?

+0

'atan2'의 부적절한 오타라고 생각합니다. – Tommy