2012-05-02 1 views

답변

0
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)]; 
     } 
    } 

해야합니다, 회전 각도에 대한 확실하지 않다 . 이 코드를 메소드에 보관하십시오. 그리고 그것을 사용하십시오 .. :) 희망이 도움이 ..

+0

지금 내가 그 발을 화면 중심이 아닌 머리 중심으로 지향하고 싶다면 어떻게해야할까요? 나는 어떤 변화를 주어야합니까? –

+0

두 가지 방법이 있습니다 ... 1은 계산 된 각도에 180을 더합니다. 두 번째는 원래 이미지를 180도 회전시킵니다. 각도를 변경할 필요가 없습니다. :) –

0
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));

+0

나는 '운영자'와 일치하지 않는 오류 : '씬 센터 - @'property_reference_expr '이 덤프로 지원되지 않음 ... –

+0

도와주세요! –

+0

그렉, 첫 번째 라인 CGPoint screenCenter에 무엇을 사용하고 있습니까? 화면 (또는 기본 창)의 중심으로 설정하고 있습니까? –