using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class mouseNavMove : MonoBehaviour { public GameObject clickPrefab; private NavMeshAgent agent; public float minDistance = 3f; private Animation anim; /// <summary> /// 鼠标点击地面的点 /// </summary> Vector3 hitPoint; private void Awake() { agent = this.GetComponent<NavMeshAgent>(); anim = this.GetComponent<Animation>(); anim["walk"].wrapMode = anim["idle"].wrapMode = WrapMode.Loop; } // Update is called once per frame void Update() { //获取鼠标点击地面的点 if (Input.GetMouseButtonDown(1))//鼠标右键瞬间按下 { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit = new RaycastHit(); if (Physics.Raycast(ray, out hit)) { if (hit.collider.tag == "Terrain") { hitPoint = hit.point; } } //鼠标点击地面的点 生成点击圆圈特效 float height = Terrain.activeTerrain.SampleHeight(hitPoint);//获取当前Terrain的高度 hitPoint.y = height + 0.3f; Instantiate(clickPrefab, hitPoint, Quaternion.identity); //开始移动 SetDestination(hitPoint); Debug.LogWarning("角色向" + hitPoint + "移动"); } if (agent.enabled) { //是否在移动中 bool isMoveing = agent.pathPending || agent.remainingDistance > agent.stoppingDistance || agent.velocity != Vector3.zero; //没有移动,就停用导航 if (!isMoveing) { agent.Stop(); agent.enabled = false; anim.CrossFade("idle",0.1f); } } } public void SetDestination(Vector3 targetPos) { agent.enabled = true; anim.CrossFade("walk", 0.1f); agent.SetDestination(targetPos); } }
鼠标点击地面,移动角色,NavMeshAgent导航
猜你喜欢
转载自blog.csdn.net/u013628121/article/details/79567694
今日推荐
周排行