玩家和敌人 2D 自动旋转

Player & Enemy 2D auto-rotation

我在屏幕底部有一个玩家,在屏幕顶部有一个敌人。我希望他们都不断地向对方旋转。这是我的代码:

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。

这里有什么问题?

你的解决方案对我来说很好用:http://imgur.com/a/spi3O

难道敌人的"up"就是玩家的"down"。意思是你的一个 sprite 是倒着画的?

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

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

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