unity射线点击移动
生活随笔
收集整理的這篇文章主要介紹了
unity射线点击移动
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
方案:利用射線獲取坐標,使用navmash導航功能進行尋路
首先聲明:using UnityEngine.AI;
渲染設置好地圖:(當然關于navmash就不在這里做贅述)
?代碼如下:
public Ray ray;//聲明射線public NavMeshAgent nav;//獲取NavMeshAgent// Start is called before the first frame updatevoid Start(){nav=this.GetComponent<NavMeshAgent>();//獲取NavMeshAgent賦值//由于 GetComponent 函數的執行速度相當慢,因此該腳本在 Start 函數期間將其結果存儲在變量中,而不是在 Update 中重復調用它。}// Update is called once per framevoid Update(){if (Input.GetKeyDown(KeyCode.Mouse0)) //如果鼠標左鍵點擊{ray=Camera.main.ScreenPointToRay(Input.mousePosition);//射線從鼠標在屏幕坐標中發射RaycastHit hit; //存儲射線對象內的投射命中點的信息到RaycastHit if (Physics.Raycast(ray,out hit)) {Vector3 points=hit.point;transform.LookAt(points); //讓導航對像在移動時始終面向導航坐標位置nav .SetDestination(points);//利用導航到指定坐標點位置}}}最后如果你的導航對象身上攜帶剛體以便與地圖中角色或物品進行物理交互,或者發現模型移動發生錯誤,請務必添加Rigidbody并鎖定x、y、z軸
?如果不鎖定會導致在碰撞時,角色本身的x、y、z發生改變,進而影響導航,從而導致bug出現
具體情況請自行測試!
------------------------------------------------------2D射線點擊---------------------------------------------------------
1、首先你的目標上要有“2D的collider”對象,這樣才能被檢測到
2、代碼如下:
Ray2D ray;void Update(){ray = new Ray2D(Input.mousePosition,Vector2.right);RaycastHit2D hit= Physics2D.Raycast(ray.origin, ray.direction);if (hit.collider!=null)//判斷碰撞體是否存在{Debug.Log("1");if (hit.transform.tag=="Player")//依照tag查找對象{Destroy(hit.transform.gameObject);//刪除目標對象}}}總結
以上是生活随笔為你收集整理的unity射线点击移动的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity射线销毁
- 下一篇: unity射线使用方法详解