그래서 임의의 위치에서 초마다 스프라이트를 만듭니다. 내가 원했던 것은 스프라이트가 스크린의 중심을 향하고 있다는 것입니다. 예를 들어 임의의 위치에서 매초마다 인체를 만들면 그의 머리가 화면 중앙으로 향하게됩니다. 감사합니다 :) 미안 내 영어 나 프랑스어 해요 :/cocos2d : 스프라이트를 화면의 중심으로 향하도록 회전합니다.
답변
CCPoint pos1 = [yourHuman position];
CCPoint pos2 = screenCenter;
float theta = atan((pos1.y-pos2.y)/(pos1.x-pos2.x)) * 180 * 7 /22;
if(pos1.y - pos2.y > 0)
{
if(pos1.x - pos2.x < 0)
{
[yourHuman setRotation:(-90-theta)];
}
else if(pos1.x - pos2.x > 0)
{
[yourHuman setRotation:(90-theta)];
}
}
else if(pos1.y - pos2.y < 0)
{
if(pos1.x - pos2.x < 0)
{
[yourHuman setRotation:(270-theta)];
}
else if(pos1.x - pos2.x > 0)
{
[yourHuman setRotation:(90-theta)];
}
}
해야합니다, 회전 각도에 대한 확실하지 않다 . 이 코드를 메소드에 보관하십시오. 그리고 그것을 사용하십시오 .. :) 희망이 도움이 ..
CGPoint screenCenter = ...; // set it manually or from device screen size
CGPoint direction = ccpSub (screenCenter, yourHuman.position);
yourHuman.rotation = CC_RADIANS_TO_DEGREE (ccpToAngle (direction));
내가 어쩌면 당신이이 완료
yourHuman.rotation = -CC_RADIANS_TO_DEGREE (ccpToAngle (direction));
나는 '운영자'와 일치하지 않는 오류 : '씬 센터 - @'property_reference_expr '이 덤프로 지원되지 않음 ... –
도와주세요! –
그렉, 첫 번째 라인 CGPoint screenCenter에 무엇을 사용하고 있습니까? 화면 (또는 기본 창)의 중심으로 설정하고 있습니까? –
지금 내가 그 발을 화면 중심이 아닌 머리 중심으로 지향하고 싶다면 어떻게해야할까요? 나는 어떤 변화를 주어야합니까? –
두 가지 방법이 있습니다 ... 1은 계산 된 각도에 180을 더합니다. 두 번째는 원래 이미지를 180도 회전시킵니다. 각도를 변경할 필요가 없습니다. :) –