反射时的旋转问题(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
}
您需要类似的代码才能将他翻转回来。
我的玩家的手臂被编程为跟随我的鼠标并相应地旋转,我已经编程使用这个旋转值发射子弹
(Math.atan2(this._dy, this._dx) * 180 / Math.PI
其中 _dy 是鼠标的 y 位置 (-) 我玩家手臂的 y 轴,_dx 是鼠标的 x 位置 (-) 我玩家手臂的 y 轴。
但是,当我对播放器进行编程以在鼠标越过 x 坐标时进行反映时,子弹角度也会反映出来。我该如何解决这个问题?
我已经试过从角度中减去 180,但它仍然没有朝鼠标的方向发射。
首先,确保你有这样的 parent-child-sibling 关系:
使用关键帧和兄弟关系
初级水平方法
使角色和手臂都 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
}
您需要类似的代码才能将他翻转回来。