오리엔테이션을 Landscape Left
에 잠근 상태로 아이폰에서 사용할 수있는 2 차원 게임에 대한 간단한 논리가 있습니다.IOS는 CMRotationRate를 사용하여 화면에서 객체를 이동합니다.
휴대 전화가 멀리에서 회전하는 경우, 가로 모드에서 들고 있다고 상상해보십시오. 개체를 위로 움직여야합니다. 그렇지 않으면 개체를 내려야합니다.
-(void)outputRotationData:(CMRotationRate)rotation
{
if (fabs(currentMaxRotY - rotation.y) < .3) {
return;
}
if(rotation.y > 0){
if (!(ship.position.y < 10)) {
[ship runAction:actionMoveDown];
NSLog(@"moving down");
}
}else{
if (!(ship.position.y > screenHeight)) {
[ship runAction:actionMoveUp];
NSLog(@"moving up");
}
}
currentMaxRotY = rotation.y;
}
위의 코드는 작동합니다. 당신이 기대하는 것만 큼은 아닙니다. 휴대 전화가 멀리 떨어져있을 때도 때로는 물체가 아래로 움직입니다. 그러나 그것은 대부분의 시간을 정확하게 움직입니다. 나는 우리의 마지막 회전과 현재 회전이 .3 이상 차이가 나지 않는다면 되돌아 감으로써 고쳐 졌을 것으로 생각되는 감도로 추정한다.
자주 변경하는 작업은 적합하지 않으며 여러 이동 작업을 동시에 실행할 수도 있습니다. 회전 속성을 직접 업데이트 할 수도 있습니다. cocos2d 개발자 안내서에서이 artcile의 두 번째 절반을보십시오 : https://www.makegameswith.us/docs/#!/cocos2d/1.3/concepts/cocos2d-actions – LearnCocos2D
아마도 자이로 스코프 회전은 절대 회전이 아니라 회전 차이? 그것을 확인하십시오. 실제로 자이로가 아닌 가속도계를 사용하려고 한 것입니까? – LearnCocos2D