Legacy Documentation: Version 2018.1 (Go to current version)
Telling a NavMeshAgent to Move to a Destination
Making an Agent Patrol Between a Set of Points
Other Versions

Moving an Agent to a Position Clicked by the Mouse

This script lets you choose the destination point on the NavMesh by clicking the mouse on the object’s surface. The position of the click is determined by a raycast, rather like pointing a laser beam at the object to see where it hits (see the page Rays from the Camera for a full description of this technique). Since the GetComponent function is fairly slow to execute, the script stores its result in a variable during the Start function rather than call it repeatedly in Update.

    // MoveToClickPoint.cs
    using UnityEngine;
    using UnityEngine.AI;
    
    public class MoveToClickPoint : MonoBehaviour {
        NavMeshAgent agent;
        
        void Start() {
            agent = GetComponent<NavMeshAgent>();
        }
        
        void Update() {
            if (Input.GetMouseButtonDown(0)) {
                RaycastHit hit;
                
                if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100)) {
                    agent.destination = hit.point;
                }
            }
        }
    }
    //MoveToClickPoint.js
    var agent: NavMeshAgent;
    
    function Start() {
        agent = GetComponent.<NavMeshAgent>();
    }

    function Update() {
        if (Input.GetMouseButtonDown(0)) {
            var hit: RaycastHit;
        
            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), hit, 100)) {
                agent.destination = hit.point;
            }
        }
    }
对文档有任何疑问,请移步至开发者社区提问,我们将尽快为您解答