1

長方形のオブジェクトがあるとしましょう。パスに沿って移動したい。このオブジェクトを 1 点だけでなく 2 点で配置することは可能ですか? たとえば、オブジェクト上の点 A は 125,220 にあり、この場合、点 B を 140,235 にします。このようにして、オブジェクトの方向を設定します。Objective-c (他の言語もそうだと思います) では、「グラフィカル オブジェクトの位置」と言うとき、通常は左下隅である 1 つの点だけを考えます。しかし、そのポイントのみに従ってオブジェクトを配置すると、オブジェクトの左下隅が別のポイントに再描画され、残りの部分はオブジェクトの高さと幅に応じて決定されます。これは、私が望むことではありません。

編集:ここに画像の説明を入力

ご覧のとおり (そしておそらくそれは当然のことです)、オブジェクトの位置を決定する点は 1 つしかないため、オブジェクトはある点から別の点へボックスとして移動します。なぜ別のものが必要なのかと尋ねます。タイマーと曲がった道があるからです。タイマーが刻むたびに、オブジェクトを別の場所 (ダンプされたポイントの配列内の次の位置) に配置する必要があります。したがって、X 座標と Y 座標を加算する代わりに、オブジェクトが特定の場所にあることを明示的に伝えます。このようにして、曲線のパスに沿ってオブジェクトの通常の動きを実現したいと考えています。オブジェクトの前部があるポイントに移動すると、後部も特定のポイントに移動する必要があります。

4

1 に答える 1

0

私はついにそれを行う方法を見つけました。前のポイントと次のポイントに従ってオブジェクトを回転させる必要があります。したがって、オブジェクトが移動するパス上に点 A、B、C、D、E、F、G、H があるとします。車がポイント D にある場合、回転角度を計算するには、次のようにします。

myObject.rotation=-atan((D.y-C.y)/(D.x-C.x))/3.141592*180;

ご覧のとおり、ただの数学です。微調整を適用して、よりスムーズな回転を得ることができます。ここでは、たとえば、現在の位置の Y から前の位置の Y を減算し、X に対して同じことを行い、それらの比率のマイナス逆正接を取得します。しかし、あなたはすることができます

-atan((E.y-C.y)/(E.x-C.x))/3.141592*180;

適切な位置を選択して x 座標と y 座標を差し引くと、正しく滑らかな回転が得られます。

3.141592 は M_PI であると推測できると思います。

于 2012-10-06T06:21:47.010 に答える