我有一个MovieClip,它代表我游戏中的一个角色。我喜欢从我的角色枪尖射出“制造子弹”。问题是,当我的角色转过身时,该点也会围绕MovieClips枢轴旋转。
是否可以轻松跟踪此点,以便我可以在同一位置动态创建新对象。
我试图在我的角色中添加一个新的MC作为孩子,初始位置在枪口。在某些系统中,子对象“跟随”他们的父母,但它似乎没有在这里工作。
是否还有其他“原生”方式,或者我只需要相对于character-MovieClips原点的点的Polar坐标表示,并将MC旋转添加到theta,以便我可以计算X和Y坐标?
答案 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有一个很好的参考。