屏幕底部有一个播放器,屏幕顶部有一个敌人。我希望他们两个都能不断向对方旋转。这是我的代码:
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个旋转和缩放值。
这里有什么问题?
答案 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);
如果您要使用相同的计算旋转的方法,则需要确保您的精灵具有相同的世界相对原始旋转,或者修复它。