Unity移动---朝向并移动到鼠标点击位置

回首望月。。。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{


    private Vector3 tempPoint;
    private bool Done;
    private void Update()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        if (Physics.Raycast(ray, out hit))
        {
            if (Input.GetMouseButtonDown(0) && hit.collider.tag == "Floor")
            {
                tempPoint = new Vector3(hit.point.x, transform.position.y, hit.point.z);
                Done = false;
            }
            if (!Done)
            {
                float tempAngle = Vector3.Angle(transform.forward, tempPoint - transform.position);//自身和目标的夹角
                transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(tempPoint - transform.position), 0.2f);

                if (tempAngle <= 10f)//是否需要旋转到一定角度在进行移动操作
                {
                    transform.position = Vector3.MoveTowards(transform.position, tempPoint, 0.5f);
                }
                if (Vector3.Distance(transform.position, tempPoint) <= 0.1f)
                {
                    Done = true;
                }

            }

        }
    }
}

看下效果:

Unity移动---朝向并移动到鼠标点击位置_第1张图片

欢迎加群:4364930讨论。

你可能感兴趣的:(Unity,功能点)