根据鼠标移动使对象旋转。 [UNITY C#]

Make an object rotate according to mouse movement. [UNITY C#]

我正在开始一个学习项目。这个想法是你有一个静态的弓箭手角色,它附有一张弓,可以将箭射向不同难度的目标。 结果一开始我就卡住了。当玩家在屏幕上的任意位置单击并按住鼠标时,我该如何制作它以便弓旋转?所以我点击+按住并移动 left/right 并且弓旋转 left/right 以瞄准射击。我还想最终让它可以移植到手机上(这样你就可以点击+按住等)。

Stack Overflow 不是代码编写服务,但我会解释您必须做什么:

方法 1(精确瞄准):

对于鼠标按下的每一帧:

  1. 从屏幕点制作Ray...提示(使用 camera.ScreenPointToRay).
  2. 使用 ray.GetPoint(distance);.
  3. 沿 Ray 获取远点
  4. Bow.Transform.LookAt(newPoint, Vector3.Up);.

方法二(连续移动):

  1. 创建一个变量 oldMousePos 来存储 Vector2 位置。
  2. 将您的初始屏幕点击位置记录到该变量中 鼠标按下事件。
  3. 有一个函数,当鼠标保持按下时每帧运行一次。
  4. 对于弓的旋转方向,可以使用 (newMousePos - oldMousePos).normalized;.
  5. 对于弓的旋转速度,您可以使用(newMousePos - oldMousePos).sqrMagnitude;