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

时间:2013-09-13 07:02:20

标签: c# rotation unity3d

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

我的剧本是:

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);

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

1 个答案:

答案 0 :(得分:0)

如果我正确理解你的问题,那么对象的变换就会绕着它的本地原点旋转,这就是为什么你看到正确的旋转但没有翻译。

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

解决问题的最简单方法是将对象的变换转换为另一个父变换,然后旋转父变换(将变换应用于对象的变换)。请注意,您必须修改对象变换的任何缩放或平移,因为它现在将继承父变换的旋转。

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