2015-01-06 2 views
0

터치 이벤트에서 스프라이트 노드를 어떻게 회전시킬 수 있습니까? 터치 이벤트에서 스프라이트 회전

다음은 코드 중으로 지금까지 가지고 : -50의 회전이 작동하지 않습니다

// Detect what side of the screen the user has touched. 
if(touchLocation.x < 160) { 
    // They've touched the left side (the car turns left) 
    [car runAction:[SKAction rotateByAngle:-50 duration:0]]; 
    [car.physicsBody applyImpulse:CGVectorMake(-20,0)]; 
    car.physicsBody.velocity = CGVectorMake(-20, 0); 

}else{ 
    // They've touched the right side (the car turns right) 
    [car runAction:[SKAction rotateByAngle:50 duration:0]]; 
    [car.physicsBody applyImpulse:CGVectorMake(20,0)]; 
    _bird.physicsBody.velocity = CGVectorMake(20, 0); 
} 

, 다른 유래 질문이 수락 된 응답으로 주어진 경우에도. 또한 작동하는 정상적인 50도 회전은 몇 초 동안 작동 한 다음 원래 위치로 되돌아갑니다.

어떻게 회전을 부드럽게 회전시킬 수 있습니까?

답변

3

rotateByAngle을 사용하면 라디안 단위입니다. 원 안에 ~ 6 라디안에 대한 theres. 그래서 당신은이 스프라이트를 여러 번 뒤집습니다. 예상했던대로 50도 회전이 아닙니다. 유사 콘텐츠 인 CGFloat(M_PI)을 사용해야합니다. 당신도 사이 변환 할 라디안 경우 변환이

let radians = CGFloat(M_PI) * degrees/180.0 

시작이와 스프라이트가보다 예측 가능한 방식으로 동작하는 경우 다음을 참조 애니메이션에 대한 지속 시간이 0이기 때문에 정말 이유

없다

거기에 행동을 사용하면 ... 그냥 설정할 수 있습니다

car.zRotation = radians 
+0

안녕, 고마워! 그러나 여전히 0 도로 즉시 되돌아가는 즉시 같은 일을하고 있습니까? 터치 이벤트에 애니메이션을 배치하는 것이 좋지 않습니까? – Jahoe

+0

은 아마도 자동차와 관련된 더 많은 코드를 볼 필요가 있습니다. 그러나 방금 내 대답에 조금 더했습니다. – hamobi

+0

zRotation 모두 해결했습니다! 감사. – Jahoe

관련 문제