播放器&敌人2D自动旋转

时间:2016-12-09 03:00:01

标签: unity3d rotation 2d

屏幕底部有一个播放器,屏幕顶部有一个敌人。我希望他们两个都能不断向对方旋转。这是我的代码:

void Update () 
    {
        Vector3 diff = target.position - transform.position; 
        diff.Normalize();

        float zRotation = Mathf.Atan2(diff.y, diff.x) * Mathf.Rad2Deg;
        Vector3 lookDirection = new Vector3(0, 0, zRotation - 90);
        transform.rotation = Quaternion.Euler(lookDirection);   
    }

鉴于此状态,玩家的行为与预期一致,但敌人总是旋转离开玩家,这意味着他向上看,而不是向下看玩家所在的位置。

如果我像这样切换diff向量:

Vector3 diff = transform.position - target.position;

然后是远离敌人的玩家。  两个精灵在编辑器中都有0个旋转和缩放值。

这里有什么问题?

1 个答案:

答案 0 :(得分:0)

您的解决方案适用于我:http://imgur.com/a/spi3O

可能是" up"因为敌人是" down"对于玩家。这意味着你的一个精灵被颠倒了?

您可以尝试以下方法,但结果相同:

var dir = target.position - transform.position;
var angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);

如果您要使用相同的计算旋转的方法,则需要确保您的精灵具有相同的世界相对原始旋转,或者修复它。