????????你想讓鼠標點擊哪里,你的運動的對象就運動到哪里嗎?
Please follow me !
首先,你要先添加一個Plane ,以及你的圍墻,你的移動的物體
?
想要實現跟隨鼠標移動,我們先創建一個腳本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;public class MovementController : MonoBehaviour
{public Transform goal; // 目標位置的Transform組件private NavMeshAgent agent; // NavMeshAgent組件用于控制移動// 在第一幀更新前調用void Start(){// 獲取自身上的NavMeshAgent組件agent = GetComponent<NavMeshAgent>();// 設置初始目標位置為goal的位置agent.destination = goal.position;}// 在每一幀更新時調用void Update(){// 檢測鼠標左鍵是否被點擊if (Input.GetMouseButtonDown(0)) {RaycastHit hit; // 存儲射線擊中的信息// 從鼠標點擊位置創建一條射線,進行射線檢測if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100)) {// 如果射線擊中物體,設置NavMeshAgent的目標位置為射線擊中的點agent.destination = hit.point;}}}
}
先簡單的分析一下代碼:
開始的時候應該先創建一個空物體,將該空物體拉進去腳本位置Goal ,該空物體的作用就是記錄開始的終點的位置,使得開始的時候你就算不移動鼠標,物體也能到達你想要到的地方
?
將這個腳本掛在你所要移動的物體上(這里我把腳本掛在我的紅色柱子上,簡化我的物體)
就算掛好腳本,現在的物體也不能移動
我們要進行Bake 一下:
在windows --> AI---->Navigation? 打開Navigation 的窗口
?注意你可以 在Inspector 和 Navigation 窗口不斷變換
?
先將我們除了移動的物體以外的物體全部設置為 static?
然后找到我們所要移動的物體
可以適當調整你的Agent Radius 就是不能靠近障礙物體的范圍(就是你設置成stadtic 的物體)
然后點擊Bake?
這樣就可以在Game 里面進行操作啦!
?
?