我有一个坦克,它有一个名为Barrel的嵌套动画片段。
Barrel成功面对玩家,除非坦克本身旋转。
所以它只适用于水箱不旋转的情况。
我需要找到一种方法让旋转工作,我用Google搜索并找到:
var rot:Number = rotation, p:DisplayObjectContainer = parent, s:DisplayObjectContainer = stage;
while (p != s) {
rot += p.rotation;
p = p.parent;
}
但我不知道如何在我当前的代码中实现它:
// calculate rotation based on target
_dx = this.x - _root.hero.x;
_dy = this.y - _root.hero.y;
// which way to rotate
_rotateTo = getDegrees(getRadians(_dx, _dy));
// keep rotation positive, between 0 and 360 degrees
if (_rotateTo > barrel.rotation + 90) _rotateTo -= 360;
if (_rotateTo < barrel.rotation - 90) _rotateTo += 360;
// ease rotation
_trueRotation = (_rotateTo - barrel.rotation) / _rotateSpeedMax;
//barrel rotation
barrel.rotation += _trueRotation;
我尝试过更改
barrel.rotation += _trueRotation;
到
barrel.rotation += _trueRotation + parent.rotation
在线阅读后,您可以简单地添加所有旋转,但似乎无法正常工作。
如何实施
var rot:Number = rotation, p:DisplayObjectContainer = parent, s:DisplayObjectContainer = stage;
while (p != s) {
rot += p.rotation;
p = p.parent;
}
进入我的代码?
答案 0 :(得分:0)
您必须否定父级的轮换,因此您只需将+=
更改为-=
即可。
rot -= p.rotation;