日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

unity射线点击移动

發布時間:2023/12/8 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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射线点击移动的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。