【问题标题】:How to rotate a GameObject around another object according to the mouse cursor position in C#如何根据 C# 中的鼠标光标位置围绕另一个对象旋转游戏对象
【发布时间】:2013-09-13 07:02:20
【问题描述】:

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

我的脚本是:

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# rotation unity3d


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 2021-01-23
      相关资源
      最近更新 更多