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

Rotation issue While Reflected (2D Platform Game)

我的玩家的手臂被编程为跟随我的鼠标并相应地旋转,我已经编程使用这个旋转值发射子弹

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

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

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

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

首先,确保你有这样的 parent-child-sibling 关系: “A”应该是“B”和“C”的parent。 “B”和“C”应该没有直接的link。他们的联系是他们有相同的parent。所以当你想移动角色时,移动parent,两者都会移动。现在,为了好东西:

使用关键帧和兄弟关系

初级水平方法

使角色和手臂都 children 属于同一个 parent 显示 object 容器(在本例中为影片剪辑)。现在,不用像我假设的那样通过 xScale 翻转任何​​东西,您可以让 MC children(手臂和角色)转到图形翻转的第 2 帧(或任何可用的帧)。


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

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

或者,您可以执行与上述相同的“同级”设置,然后缩放角色而不是手臂(我认为缩放手臂会再次搞砸,但您可以让手臂转到第 2 帧并把它画反了,这样拇指和手柄就指向了正确的方向。改变 z 堆叠顺序的加分点,这样手臂就可以走到 body 的另一边。只有 body 的 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
}

您需要类似的代码才能将他翻转回来。