如何根据 C# 中的鼠标光标位置围绕另一个对象旋转游戏对象

本文关键字:一个对象 旋转 对象 游戏 位置 光标 何根 鼠标 | 更新日期: 2023-09-27 18:31:06

我正在尝试根据鼠标光标移动旋转对象(例如泡泡射击游戏中的泡泡枪)。但是我被归档用我的脚本来做到这一点。

我的脚本是:

mouse_pos = Input.mousePosition;
Debug.Log(mouse_pos);
object_pos = Camera.main.WorldToScreenPoint(target.position);
mouse_pos.x = mouse_pos.x - object_pos.x;
mouse_pos.y = mouse_pos.y - object_pos.y;
angle = Mathf.Atan2(mouse_pos.y, mouse_pos.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0, 0,-angle);

只旋转它不会移动的相同位置。请任何人帮助我解决这个问题。或者给我指出任何好的教程....

如何根据 C# 中的鼠标光标位置围绕另一个对象旋转游戏对象

如果我正确理解了您的问题,那么对象的变换将围绕其本地原点旋转,这就是为什么您看到正确的旋转但没有平移的原因。

Unity 按以下顺序应用变换:缩放、平移、旋转。

解决此问题的最简单方法是将对象的转换父级

转换为另一个父转换,然后旋转父转换(已将转换应用于对象的转换)。请注意,您必须修改对象转换上的任何缩放或平移,因为它现在将继承父转换的旋转。

希望对您有所帮助,否则请提供有关您的问题的更多详细信息。