AS3顺利旋转方向
我对径向计算不是很好,我无法想象因此我无法确定。 我需要Math.atan2()的一些解释。
通常的任务 - 让鼠标在鼠标后旋转。 我得到的差异,得到的角度,我看到文字区域的角度,直接对象确实遵循鼠标。 我现在需要的是一切都很顺利。 我需要的角度为0-360,但是在180物体旋转后变为-180并向后计数,并且鼠标旋转在270之后变为-90并且也计数回0。
更深入地说,我想要一个平稳的旋转,它意味着每帧的设定速度为2,以最短的方式满足鼠标角度。 它需要设置条件,我不能这样做,因为我甚至不理解这些值的逻辑。 他们几乎是随机的! 我不需要它被完成或复制,我需要理解继续前进,所以如果你能解释它是如何工作的以及我做错了什么的话......
代码很简单:angle = Math.atan2(deltaY,deltaX)/(Math.PI / 180)+90; // + 90导致它看不到鼠标// Object01.rotation = angle;
所以问题是我甚至不知道它是如何工作的......如果两个值不同,对象不能指向鼠标,但它确实如此。 数字谎言,如果我需要基于这些数字的东西,这将是错误的。 非常错误...需要组织。 意思是我希望一切都准备好进一步编码,这将基于旋转不会导致失配的上下跳动。
添加:它是如何发生的解释,我上面描述的。 为什么这样的价值观混乱? 正如我所说,关于如何安排它进一步编码的建议。 如果我想让旋转成为诸如拍摄方向和瞄准速度等重要事件的元素,动画本身就无法工作。 或改变锁定锁的速度旋转。 或者更复杂的东西,如果我没有做出明确的直接数值:从A到Z,从1到10,在8和2之间没有8,在B之前没有R,在面对它的对象时没有鼠标角度270, 90时,他们都是从0开始并一起达到180。 哦,正如我所说的,鼠标面对工程,但是当我尝试以一定的速度追赶鼠标时,最快的方法是在四个季度内将对象转向错误的方向。 我认为这也是关于这个arctangens的问题,在不同方面delta值会变成负值。 当我改变它的时候,其他一些价值就会出错......所以我需要确切地知道我在做什么来知道什么是错的,以及如何解决它。 所以是的。 需要解释。 请。
Add2:angleZ = Math.atan2(oppSide,adjSide)/(Math.PI / 180); 所以我把旋转分为4个季度,因为我每次都将atan计为opp。 方面。 一边,然后分别添加90,180和270。 我的鼠标旋转360,但通过简单的object.rotation = angleZ; 仍然是180,然后从-180到0左侧。 为什么它忽略了简单的命令? 旋转适合,但我需要它是平等的,没有惊喜! 为什么会发生? 如何将数字I直接设置为等于另一个数字作为动作的基础,将其自动更改为同一个旋转但完全不同的数字? 它甚至不知道它是度数! 它就像“object.rotation,请等于我选择的数字!”一样简单!
这只是不同的坐标系。 就像舞台左侧0开始的x一样,x +向右,-x向左,物体旋转从0°开始向上,顺时针旋转180°,逆时针旋转180°。
Math.atan2碰巧从0开始指向左(-x),顺时针旋转+270˚和逆时针旋转-90˚,这很烦人,但这意味着您必须通过增加90˚在坐标系之间进行转换。
当然,你可以反复旋转一些东西,所以数字跳跃,以便它们始终保持在同一范围内,因为361˚与1˚相同,-270˚与90˚相同。 您可以告诉物体在-180˚到180˚的范围外旋转,并将旋转标准化为这些值。
正如mitim所描述的,要平滑地创建旋转角色,您需要使用Event.ENTER_FRAME
,一个Timer
或TweenLite等补间库。 大多数补间库可以为您制定出最短的旋转方向,但除此之外,您可以简单地计算两者并查看哪个更小。
作为一个想法,因为您似乎知道需要旋转的角度以及它的方向,只是朝着该角度设置动画以获得顺利旋转会更容易? 基本上像对待任何其他动画般的属性一样对待它,并在每帧的刻度上添加旋转速度(看起来2度),直到达到所需的旋转。