如何在旋转MovieClip时跟踪一个点?

时间:2012-02-14 19:27:19

标签: actionscript-3 rotation tracking movieclip point

我有一个MovieClip,它代表我游戏中的一个角色。我喜欢从我的角色枪尖射出“制造子弹”。问题是,当我的角色转过身时,该点也会围绕MovieClips枢轴旋转。

是否可以轻松跟踪此点,以便我可以在同一位置动态创建新对象。

我试图在我的角色中添加一个新的MC作为孩子,初始位置在枪口。在某些系统中,子对象“跟随”他们的父母,但它似乎没有在这里工作。

是否还有其他“原生”方式,或者我只需要相对于character-MovieClips原点的点的Polar坐标表示,并将MC旋转添加到theta,以便我可以计算X和Y坐标?

2 个答案:

答案 0 :(得分:2)

尝试使用localToGlobal()globalToLocal()方法将角色动画片段中的坐标转换为其父级。

答案 1 :(得分:1)

使用喷枪设置影片剪辑(我假设它位于手臂的末端?),以便喷枪尖端从枢轴点直接穿过。

然后通过发射子弹的三个参数的方法:枪MC的x和y位置,以及它当前的角度。

子弹初始位置的代码可能如下所示:

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);
}

其中ARMLENGTH是从枢轴点到枪口末端的距离。

两个警告,Flash可以使用角度做奇怪的事情,因此如果玩家面向后方,你可能必须在CreateBullet()中使用反转度制作if语句。此外,如果您将枪MC作为角色的孩子,则可能必须在枢轴点处创建一个Point,然后对其执行localToGlobal。对here有一个很好的参考。