????????你想讓鼠標(biāo)點(diǎn)擊哪里,你的運(yùn)動(dòng)的對(duì)象就運(yùn)動(dòng)到哪里嗎?
Please follow me !
首先,你要先添加一個(gè)Plane ,以及你的圍墻,你的移動(dòng)的物體
?文章來源地址http://www.zghlxwxcb.cn/news/detail-656926.html
想要實(shí)現(xiàn)跟隨鼠標(biāo)移動(dòng),我們先創(chuàng)建一個(gè)腳本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class MovementController : MonoBehaviour
{
public Transform goal; // 目標(biāo)位置的Transform組件
private NavMeshAgent agent; // NavMeshAgent組件用于控制移動(dòng)
// 在第一幀更新前調(diào)用
void Start()
{
// 獲取自身上的NavMeshAgent組件
agent = GetComponent<NavMeshAgent>();
// 設(shè)置初始目標(biāo)位置為goal的位置
agent.destination = goal.position;
}
// 在每一幀更新時(shí)調(diào)用
void Update()
{
// 檢測(cè)鼠標(biāo)左鍵是否被點(diǎn)擊
if (Input.GetMouseButtonDown(0))
{
RaycastHit hit; // 存儲(chǔ)射線擊中的信息
// 從鼠標(biāo)點(diǎn)擊位置創(chuàng)建一條射線,進(jìn)行射線檢測(cè)
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100))
{
// 如果射線擊中物體,設(shè)置NavMeshAgent的目標(biāo)位置為射線擊中的點(diǎn)
agent.destination = hit.point;
}
}
}
}
先簡(jiǎn)單的分析一下代碼:
開始的時(shí)候應(yīng)該先創(chuàng)建一個(gè)空物體,將該空物體拉進(jìn)去腳本位置Goal ,該空物體的作用就是記錄開始的終點(diǎn)的位置,使得開始的時(shí)候你就算不移動(dòng)鼠標(biāo),物體也能到達(dá)你想要到的地方
?文章來源:http://www.zghlxwxcb.cn/news/detail-656926.html
將這個(gè)腳本掛在你所要移動(dòng)的物體上(這里我把腳本掛在我的紅色柱子上,簡(jiǎn)化我的物體)
就算掛好腳本,現(xiàn)在的物體也不能移動(dòng)
我們要進(jìn)行Bake 一下:
在windows --> AI---->Navigation? 打開Navigation 的窗口
?注意你可以 在Inspector 和 Navigation 窗口不斷變換
?
先將我們除了移動(dòng)的物體以外的物體全部設(shè)置為 static?
然后找到我們所要移動(dòng)的物體
可以適當(dāng)調(diào)整你的Agent Radius 就是不能靠近障礙物體的范圍(就是你設(shè)置成stadtic 的物體)
然后點(diǎn)擊Bake?
這樣就可以在Game 里面進(jìn)行操作啦!
?
?
到了這里,關(guān)于Unity 物體的運(yùn)動(dòng)之跟隨鼠標(biāo)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!