2016-07-18 6 views
1

私はGame MakerでRTSゲームを開発しています。追跡用ミサイルの作成にはいくつかの助けが必要です。Game Maker - 追跡用の投射物を作成できません

考えられるのは、オブジェクトユニットの特定のインスタンスをリアルタイムで追跡するオブジェクトを作成することです。単純にするには、敵ユニットに続く発射物を作成します。ホーミングミサイルのように。

現時点では、私はobj_projectileを作成するたびに、私はunit.idで発射体自体 "trackId"に変数を設定します。私は追跡しています。このように:

projectile.trackId = foe.id; 

敵のユニットである私は撮影しています。

そして、発射のためのステップイベントで:

//If unit does not exists keep going to the same point 
if object_exists(trackId){ 
    lastKnownX = trackId.x; 
    lastKnownY = trackId.y; 
} 

direction = point_direction(x, y, lastKnownX, lastKnownY); 
image_angle = point_direction(x, y, lastKnownX, lastKnownY); 
motion_add(point_direction(x, y, lastKnownX, lastKnownY), acceleration); 

//Don`t go topspeed 
if (speed > movespeed) speed = movespeed; 

movespeedと加速度がobj_projectileの変数です。

私はこれを行うことによって、もし最初のターゲットユニットへの参照をフェールセーフしようとした:

if object_exists((trackId)){ 
    lastKnownX = (trackId).x; 
    lastKnownY = (trackId).y; 
} 

しかし、それはどちらか動作しません。

私が持っているのは、発射体が作成されてから、その時点でターゲットがあったところに行き、モーションレスでそこにとどまることです。ターゲットを追跡しません。

私は本当に何が間違っているのか分かりません。私はこれをやる方法をたくさん試しました。今回はGoogleが役に立たなかった。 Googleには答えはありませんが、私はそれを見つけることができません:(

私はこれを非常に間違ったやり方で行っていますか?私が見逃したことはありますか?それはそれであってもよいので、それによって、オブジェクトへの参照のうえには、IDです。読書のための

感謝を。

答えて

1

質問がちょうどレコードに対して、別のサイトに答えた、私は間違っobject_existsを使用していた、私はinstance_existsを使用するために使用するために必要な。

発射体のステップイベントで:

if instance_exists(trackId){ 

代わりの

if object_exists(trackId){ 
関連する問題