varesa
varesa

Reputation: 2419

How to track a point on rotating MovieClip?

I have a MovieClip, that is representing a character in my game. Id like to "create bullets" shooting out from the tip of my characters gun. Problem is that when my character turns around, also the point rotates around the MovieClips pivot.

Is it possible to anyhow easily track this point, so that I could dynamically create new objects at the same location.

I tried to add a new MC as a child to my character, with the initial position at the guntip. In some systems child-objects "follow" their parents around, but it didnt seem to work here.

Is there any other "native" way of doing this, or do I just have to have a Polar-coordinates representation of the point relative to character-MovieClips origin, and add the MC rotation to theta, so that I can calculate the X and Y coordinates?

Upvotes: 0

Views: 870

Answers (2)

n_i_c_k
n_i_c_k

Reputation: 1534

Set up the movie clip with the gun (I'm assuming it's at the end of an arm?) so that the gun tip is straight across from the pivot point.

Then pass the method that fires the bullet three parameters: the x and y position of the gun MC, and its current angle.

The code for your bullets initial position might look something like this:

public function CreateBullet(x,y:Number, degree:Number)
{
    // set start position
    this.x = x + ARMLENGTH*Math.cos((degree/180)*Math.PI);
    this.y = y + ARMLENGTH*Math.sin((degree/180)*Math.PI);
}

Where ARMLENGTH is the distance from the pivot point to the end of the gun.

Two caveats, Flash can do weird things with angles, so you might have to make an if statement in CreateBullet() with inverted degrees if the player if facing backwards. Also, if you have the gun MC as a child of your character, you might have to make a Point where the pivot point is then do a localToGlobal on it. There's a good reference for that here.

Upvotes: 1

sch
sch

Reputation: 27536

Try localToGlobal() and globalToLocal() methods to transform coordinates from your character movieclip to its parent.

Upvotes: 2

Related Questions