我的玩家的手臂被编程为跟随我的鼠标并相应地旋转,并且我使用此旋转值编程了子弹以进行射击
(Math.atan2(this._dy, this._dx) * 180 / Math.PI
其中_dy是鼠标的y位置( - )是我的玩家手臂的y,而_dx是鼠标的x位置( - )是我的玩家手臂的y。
但是,当我对播放器进行编程以反映鼠标何时越过x坐标时,子弹角也会反映出来。我该如何解决这个问题?
我已经尝试从角度减去180,但它仍然没有朝着鼠标的方向射击。
答案 0 :(得分:1)
首先,确保您有这种父子关系: " A"应该是" B"的父母。和" C"。 " B"和" C"应该没有直接联系。他们的联系是他们有同一个父母。因此,当您想要移动角色时,移动父级,两者都会移动。现在,为了好的东西:
初学者级别方法
使角色和手臂成为同一父显示对象容器的两个子节点(在本例中为Movie Clip)。现在,我假设你没有通过xScale翻转任何东西,你可以让两个MC子(手臂和角色)转到第2帧(或任何可用的),其中图形被翻转。
中等水平的方法(最佳结果) *
或者,你可以做同样的事情"兄弟姐妹"设置如上,然后缩放角色但不缩放手臂(我认为缩放手臂会再次弄乱它,但是你可以让手臂转到第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
}
你需要类似的代码才能将其翻转回来。