タッチ位置に基づいて移動するスプライトがあります。私は衝突のためにbox2dを使用しています。スプライトが別のオブジェクトと衝突すると、スプライトが180度回転して衝突から遠ざかり、スプライトはx方向に回転しながらスプライトを移動します。影響を与える。回転に基づいてスプライトの前に位置を取得
どのように私は、回転に基づいてスプライトの前にピクセルのx量である位置を得ることができます誰に教えてください。
おかげ
タッチ位置に基づいて移動するスプライトがあります。私は衝突のためにbox2dを使用しています。スプライトが別のオブジェクトと衝突すると、スプライトが180度回転して衝突から遠ざかり、スプライトはx方向に回転しながらスプライトを移動します。影響を与える。回転に基づいてスプライトの前に位置を取得
どのように私は、回転に基づいてスプライトの前にピクセルのx量である位置を得ることができます誰に教えてください。
おかげ
あなたのスプライトは、次の式で向いている方向を取得することができます:
public static Vector2 AngleToVector(float angle)
{
return new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle));
}
それはあなたが計算しようとしているスポットに向けて正確に指し示すことになる返すベクトル。それを正規化し、次にそれに手を差し伸べるピクセル数を掛けます。それはトリックを行う必要があります。
returnedVector = AngleToVector(currentAngle);
returnedVector.Normalize();
returnedVector *= x;
上記はC#コードですが、あなたの言語に変換できるはずです。
あなたが移動すべきピクセルの量を計算するスプライトのcontentSizeかにBoundingBoxを使用することができます。和の兆候は、あなたがに向けてスプライトを移動する必要がある向きに応じて
sprite.position = ccp(sprite.position.x - xAmount - sprite.contentSize.width/2, sprite.position.y)
変更:(唯一のx軸上の変更)のノードは、その中央部に固定されていることを考えると、あなたはこのような何かを行うことができます必要に応じてxAmountを入力します。
乾杯。
あなただけの世界に地元のポイントに変換することができます:
CGPoint global = [sprite convertoToWorldSpace:ccp(x, 0)];