📜  指向鼠标 2D Unity - C# (1)

📅  最后修改于: 2023-12-03 15:10:08.025000             🧑  作者: Mango

指向鼠标 2D Unity - C#

在 Unity 中,你可以实现许多有趣的互动效果。其中一种效果是让游戏对象指向鼠标位置。在这篇文章中,我们将介绍如何用 C# 代码来实现这个效果。

实现过程

首先,在你的场景中创建一个游戏对象,这将会是我们指向鼠标的物体。我们可以在这个物体上添加一个 sprite 渲染器,以便我们能够看到它。

接着,我们需要编写一个脚本来控制这个物体的行为。创建一个新的 C# 脚本,并将其附加到我们刚刚创建的游戏对象上。在脚本中,我们将使用 Update() 函数来检测鼠标的位置,并改变我们的对象的朝向。

代码片段:

using UnityEngine;

public class LookAtMouse : MonoBehaviour
{
    void Update()
    {
        Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        mousePosition.z = 0f;

        Vector3 objectPosition = transform.position;
        objectPosition.z = 0f;

        Vector3 direction = mousePosition - objectPosition;
        float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
        transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle));
    }
}

Update() 函数中,我们首先使用 Camera.main.ScreenToWorldPoint() 函数将鼠标指针位置从屏幕坐标系转换为世界坐标系。接着,我们将 z 轴值设置为 0,因为我们只在2D平面上操作。

我们还取得了游戏对象本身的位置,并将这个位置的 z 轴值设置为 0。

接下来,我们计算一个从游戏对象指向鼠标的方向向量。然后,我们使用 Mathf.Atan2() 函数来计算角度,并将其转换为度数。最后,我们将我们的对象旋转到这个角度。

总结

我们学习了如何使用 C# 代码来实现鼠标指针的方向,使我们的游戏对象跟随着鼠标移动。我们介绍了 Camera.main.ScreenToWorldPointMathf.Atan2Quaternion.Euler 函数的用法。这些函数是实现这个效果所必需的。

如果你对 Unity 还不熟悉,我们建议你先学习一些基础知识。当你对 Unity 的工作方式有了更深入的了解之后,这个效果会变得更容易理解和实现。