2014-10-01 2 views
1

저는 오랫동안 스프라이트 키트 게임을 제작 해 왔습니다. 최근에는 자이로/틸트 기능을 추가했습니다. CMMotionManager을 사용하여 놀랍도록 쉽게 번호에 액세스 할 수있었습니다. 그러나 내 문제는 acceleration.x 값이 저장된 결과로 발생합니다.스프라이트 키트의 iPhone 기울기에 대한 응답

게임이 시작될 때 내 게임이 작동하는 방식을 볼 때 휴대 전화는 현재 휴대 전화가 어떻게 움직이는지를 빠르게 조정 한 다음 acceler.x (휴대 전화를 가로 방향으로 잡고, 이것은 화면을 기울이거나 멀리 기울이는 것과 동일합니다.) 그러나 폰을 평평하게 놓는 것은 1.0이며 사용자쪽으로 똑바로 기울이면 0.0입니다. 그 이상으로 넘어 간다면이 값을 통해 다시 루프됩니다. 누군가가 똑바로 앉아 있고 전화기가 .1에서 보정되고 전화기가 .2 아래쪽으로 기울이면 예상 한 결과가 아닐 수 있습니다.

쉽게 해결할 수 있습니까?

답변

1

왜 자신의 시스템을 만들려고합니까? 실제로 가속도계 값을 직접 사용하지 않아야합니다.

CMAttitude 클래스에는 장치의 방향에 대한 모든 정보가 들어 있습니다.

이 방향은 가속도계 데이터에서 가져온 것이 아니라 가속도계, 자이로 스코프 및 자력계를 사용하여 장치의 현재 자세를 계산합니다.

여기에서 roll, pitchyaw 값을 가져 와서 직접 계산하지 않아도됩니다.

Class documentation for CMAttitude.