2012-02-14 96 views
0

我有一个MovieClip,表示我的游戏中的角色。我喜欢从我的角色枪尖射出“创造子弹”。问题是,当我的角色转身时,点也围绕着影片剪辑轴旋转。如何跟踪旋转MovieClip上的点?

是否有可能轻易地跟踪这一点,以便我可以在同一位置动态地创建新对象。

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

是否有任何其他“原生”的方式做到这一点,或者我只需要有一个相对于人物 - 动画片片起源的点的极坐标表示,并将MC旋转添加到theta,以便我可以计算X和Y坐标?

+0

简单的数学http://en.wikipedia.org/wiki/Circle – 2012-02-14 20:13:47

回答

2

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

+0

听起来像我一直在寻找的东西...我会明天尝试 – varesa 2012-02-14 21:11:51

1

设置了枪(我假设它是在一个臂的末端?),这样枪尖离支点径直穿过影片剪辑。

然后通过触发该子弹三个参数的方法,包括:在x和枪MC的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()语句倒度。另外,如果你有枪MC为你的性格的孩子,你可能需要做一个点,支点是那么做localToGlobal就可以了。有一个很好的参考here

+0

假设枪在一边,将支点衬在桶上会让玩家难以旋转。我想到了这一点,但我猜想转身/瞄准会“看起来很丑” – varesa 2012-02-14 21:09:10