2016-07-18 30 views
1

Hey Leute, ich entwickle ein RTS Spiel in Game Maker und ich brauche etwas Hilfe beim Erstellen von Tracking-Raketen.Game Maker - Kann keine Projektile erstellen

Die Idee besteht darin, ein Objekt zu erstellen, das eine gegebene Instanz einer Objekteinheit in Echtzeit verfolgt. Um es einfach zu machen, erstelle ein Projektil, das einer gegnerischen Einheit folgt. Wie eine zielsuchende Rakete.

Im Moment, wenn ich ein Obj_projectile erstelle, setze ich eine Variable im Projektil selbst "trackId" mit der unit.id, die ich tracking bin. Auf diese Weise:

projectile.trackId = foe.id; 

Feind sein die Feindeinheit, die ich schieße.

Und dann, im Schritt Ereignis für das Geschoss:

//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 und Beschleunigung sind Variablen des obj_projectile.

Ich habe versucht, die Verweise auf die Zieleinheit in der ersten Failsafe wenn durch dies zu tun:

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

Aber es funktioniert auch nicht.

Die Sache ist, das Ergebnis, das ich habe ist, dass die Projektile erstellt werden und dann gehen Sie den Punkt, der das Ziel in diesem Moment war, und dann bleiben Sie bewegungslos. Das Ziel wird nicht verfolgt.

Ich weiß wirklich nicht, was ich falsch mache, und ich versuchte eine Menge Möglichkeiten, dies zu tun. Google hat sich dieses Mal nicht als nützlich erwiesen. Nicht zu sagen, dass Google die Antwort nicht hat, aber ich konnte es nicht finden :(

Ich mache das auf eine sehr falsche Art und Weise? Gibt es eine offensichtliche Sache, die ich vermisse? Ich bin nicht ganz vertraut mit beziehen, um Objekte durch ID ist, so ist es das.

zum Lesen

Dank sein kann.

Antwort

1

Frage in einer anderen Seite beantwortet wurde, nur für das Protokoll, ich wurde mit object_exists falsch, ich brauchte instance_exists zu verwenden, zu verwenden .

Im Schritt Ereignis für das Projektil:

if instance_exists(trackId){ 

statt

if object_exists(trackId){