Unity-將代理移動到鼠標單擊的位置
此腳本允許通過在對象表面上單擊鼠標來選擇導航網(wǎng)格上的目標點。單擊位置由_射線投射_確定,而非像將激光束指向?qū)ο髞聿榭雌渌谖恢茫ㄓ嘘P(guān)此技術(shù)的完整描述,請參閱攝像機射線頁面)。由于?GetComponent?函數(shù)的執(zhí)行速度相當慢,因此該腳本在?Start?函數(shù)期間將其結(jié)果存儲在變量中,而不是在?Update?中重復調(diào)用它。
// 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.