反射时的旋转问题(2D平台游戏)

时间:2016-06-06 02:40:17

标签: actionscript-3 actionscript platform

我的玩家的手臂被编程为跟随我的鼠标并相应地旋转,并且我使用此旋转值编程了子弹以进行射击

(Math.atan2(this._dy, this._dx) * 180 / Math.PI

其中_dy是鼠标的y位置( - )是我的玩家手臂的y,而_dx是鼠标的x位置( - )是我的玩家手臂的y。

但是,当我对播放器进行编程以反映鼠标何时越过x坐标时,子弹角也会反映出来。我该如何解决这个问题?

我已经尝试从角度减去180,但它仍然没有朝着鼠标的方向射击。

1 个答案:

答案 0 :(得分:1)

首先,确保您有这种父子关系: characterObject " A"应该是" B"的父母。和" C"。 " B"和" C"应该没有直接联系。他们的联系是他们有同一个父母。因此,当您想要移动角色时,移动父级,两者都会移动。现在,为了好的东西:

使用关键帧和兄弟关系

初学者级别方法

使角色和手臂成为同一父显示对象容器的两个子节点(在本例中为Movie Clip)。现在,我假设你没有通过xScale翻转任何东西,你可以让两个MC子(手臂和角色)转到第2帧(或任何可用的),其中图形被翻转。

xScale正文,将手臂移动到第2帧,更改z顺序

中等水平的方法(最佳结果) *

或者,你可以做同样的事情"兄弟姐妹"设置如上,然后缩放角色但不缩放手臂(我认为缩放手臂会再次弄乱它,但是你可以让手臂转到第2帧并将其拉出来,这样拇指和手柄指向正确的方向。用于改变z堆叠顺序的加分点,使得手臂移动到身体的另一侧。仅仅身体的xScale允许你只有一组框架用于他的腿和躯干的动画等,但也避免缩放手臂在所有)。

全球属性

高级方法

第三种选择是使用全局旋转和全局点。我不会在这里说明这一点,因为我不是那么先进,我需要一段时间来弄清楚确切的语法。如果您已经掌握了全局属性,请尝试这样做;如果没有,请尝试以上其中一个。

*示例(最佳结果)

if (facingRight == true && stage.mouseX < totalChar.x){ 
// totalChar is on the stage
// and contains two children: 
// armAndGun and bodyHeadLegs
    totalChar.armAndGun.gotoAndStop(2);
    // in frame 2 of the arm MC, draw the 
    // arm and gun in the flipped orientation
    totalChar.addChild(bodyHeadLegs);
    // re-ads body to parent so it's
    // z-order is above the arm;
    totalChar.bodyHeadLegs.xScale = -1;// flips body and any animation of legs and head
    facingRight = false;
    // use a variable or property like this
    // to keep him from constantly flipping
}

你需要类似的代码才能将其翻转回来。