根据鼠标移动使对象旋转。 [UNITY C#]
Make an object rotate according to mouse movement. [UNITY C#]
我正在开始一个学习项目。这个想法是你有一个静态的弓箭手角色,它附有一张弓,可以将箭射向不同难度的目标。
结果一开始我就卡住了。当玩家在屏幕上的任意位置单击并按住鼠标时,我该如何制作它以便弓旋转?所以我点击+按住并移动 left/right 并且弓旋转 left/right 以瞄准射击。我还想最终让它可以移植到手机上(这样你就可以点击+按住等)。
Stack Overflow 不是代码编写服务,但我会解释您必须做什么:
方法 1(精确瞄准):
对于鼠标按下的每一帧:
- 从屏幕点制作
Ray
...提示(使用
camera.ScreenPointToRay
).
- 使用
ray.GetPoint(distance);
. 沿 Ray
获取远点
Bow.Transform.LookAt(newPoint, Vector3.Up);
.
方法二(连续移动):
- 创建一个变量
oldMousePos
来存储 Vector2
位置。
- 将您的初始屏幕点击位置记录到该变量中
鼠标按下事件。
- 有一个函数,当鼠标保持按下时每帧运行一次。
- 对于弓的旋转方向,可以使用
(newMousePos - oldMousePos).normalized;
.
- 对于弓的旋转速度,您可以使用
(newMousePos -
oldMousePos).sqrMagnitude;
。
我正在开始一个学习项目。这个想法是你有一个静态的弓箭手角色,它附有一张弓,可以将箭射向不同难度的目标。 结果一开始我就卡住了。当玩家在屏幕上的任意位置单击并按住鼠标时,我该如何制作它以便弓旋转?所以我点击+按住并移动 left/right 并且弓旋转 left/right 以瞄准射击。我还想最终让它可以移植到手机上(这样你就可以点击+按住等)。
Stack Overflow 不是代码编写服务,但我会解释您必须做什么:
方法 1(精确瞄准):
对于鼠标按下的每一帧:
- 从屏幕点制作
Ray
...提示(使用camera.ScreenPointToRay
). - 使用
ray.GetPoint(distance);
. 沿 Bow.Transform.LookAt(newPoint, Vector3.Up);
.
Ray
获取远点
方法二(连续移动):
- 创建一个变量
oldMousePos
来存储Vector2
位置。 - 将您的初始屏幕点击位置记录到该变量中 鼠标按下事件。
- 有一个函数,当鼠标保持按下时每帧运行一次。
- 对于弓的旋转方向,可以使用
(newMousePos - oldMousePos).normalized;
. - 对于弓的旋转速度,您可以使用
(newMousePos - oldMousePos).sqrMagnitude;
。