2011-12-28 4 views
0

C++で1つのオブジェクトが動くオブジェクトに従うという関数を実装したいと思います。それをする方法は、私に大きな助けとなるでしょう。オブジェクトの後に続くオブジェクト

+1

これはかなり曖昧ですが、詳しく説明しますか? – AusCBloke

+1

オブジェクト、OOPのように?あなたの画面上の円のようにオブジェクトですか?それとも全く別のもの? –

+1

詳細をお知らせください。どのオブジェクト、カメラを通して物理?あなたが間違ったフォーラムにいるように聞こえます... –

答えて

0

この優れたポスト状態、と私はそれから引用:

プレーヤーの位置がPOINT1です。敵の位置はpoint2です。最初に x1とx2、y1とy2の違いを見つける必要があります (私はこれらをxdとydと呼んでいます)。その後、theta = atan(yd/xd)を実行することによって、 の2つのポイント間の角度を取得できます。今度は、角度を使って とx3 =(d)(cos(theta))とy3 = と移動する距離を 新しいxとy(x3とy3と呼ぶ)を得ることができるはずです。 (d)(sin(θ))である。敵を(x3、y3)に移動する。

dは、アップデートごとに敵が移動する速度です。 に標識を付けて右折しなければならない場合があります(つまり、敵が の正しいx方向であるが間違ったy方向に移動した場合は、 の標識を変更します)。ここ

より:Game enemy move towards player

+0

ニースマイケル、これは私が実装したソリューションとほとんど同じですが、私の変数の数を減らすためにacosを使っていた以外は同じです。 ;)ありがとう、私は最高の答えとしてこれを評価します。 –

+0

これは、プレイヤーが静止していることを前提としています。また、このトリグはすべて不要です。 Isaac Fifeは適切な計算方法を説明しています。 –

0

これは実際にどのように動きが発生するかによって異なります。共通の答えを得ることは不可能です。固定ノード(またはグリッドのような単純なチェスボード)を持つマップの場合は、A *などの経路探索アルゴリズムを使用します。

自由に移動できるようにするには、オブジェクト(または動きベクトル)をターゲットに向けて加速/減速させたいと思う可能性があります。

詳細な説明がなくても、完璧な答えはありません。

+0

返信ありがとう、マリオ。私のQの懸念については、ベクトルなしで自由に動き、xyの位置移動を実装しました。このシナリオのヒント –

0

ちょうどxとyを使用するが、これは非常に単純なベクトルの問題です。

方向の単位ベクトルを使用します。フォロワーが1単位時間内に移動する距離をスカラーで乗算します。これは新しい相対的な位置を与えるでしょう。単位ベクトルは、フォロワーからリーダーに向かう方向でなければなりません。

関連する問題