2012-05-02 11 views
0

したがって、毎秒スプライトをランダムな位置に作成します。私が望むのは、スプライトが画面の中央に向いているということです。たとえば、毎秒ランダムな位置で人体を作成すると、頭を画面の中心に向けることができます。ありがとう:)私の英語のため申し訳ありませんが、私はフランス人だ:/cocos2d:スプライトを画面の中心に向けるように回転させます。

答えて

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

2つの方法があります... 1は計算された角度に180を加えます.2番目は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

私はエラーがあります: 'オペレータ'と一致する 'screen_Center' - @ 'property_reference_expr'がダンプでサポートされていません... –

+0

私を助けてください! –

+0

Greg、CGPoint screenCenterの最初の行には何を使用していますか?あなたはそれを画面(またはメインウィンドウ)の中央に設定していますか? –

関連する問題