2d平面unity,鼠标点击某个位置,人物角色朝这个方向移动

介绍

2d平面unity,鼠标点击某个位置,人物角色朝这个方向移动


方法

using UnityEngine;

public class MoveToClickPoint : MonoBehaviour
{
    
    
    public float speed = 5f; // 角色速度

    void Update()
    {
    
    
        if (Input.GetMouseButtonDown(0)) {
    
    
            // 鼠标左键点击
            Vector3 clickPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); // 获取鼠标点击位置
            clickPosition.z = 0; // 将z轴设为0(2D平面)
            transform.LookAt(clickPosition); // 角色朝向点击位置
            transform.Translate(Vector3.forward * speed * Time.deltaTime); // 角色向前移动
        }
    }
}


屏幕坐标为什么要转化成相机坐标?

如果我们没有将鼠标点击位置转换为世界坐标系中的位置,而是直接将屏幕坐标系中的位置作为角色移动的目标位置,那么可能会发生以下两种情况:

  1. 角色会偏离目标位置
    由于屏幕坐标系中的位置和世界坐标系中的位置具有不同的尺度和坐标系,因此如果我们直接使用屏幕坐标系中的位置作为目标位置,那么角色移动时可能会偏离该位置。

  2. 角色会移动到意外的位置
    如果我们使用屏幕坐标系中的位置作为目标位置,那么角色可能会移动到预想之外的位置。这是因为屏幕坐标系中的位置是相对于屏幕左下角的,而不是相对于游戏场景中的某个位置的。因此,如果我们直接使用屏幕坐标系中的位置作为目标位置,那么角色可能会移动到屏幕左下角附近,而不是我们期望的位置。

因此,我们需要将屏幕坐标系中的位置转换为世界坐标系中的位置,以确保角色能够正确地移动到我们期望的位置。


猜你喜欢

转载自blog.csdn.net/qq_20179331/article/details/130681726