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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Unity(射线)

發布時間:2024/9/21 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity(射线) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#1、描述

此課程說明射線的使用,并且舉例一個鼠標點擊游戲對象移動的示例,注意,如果想要被射線響應到,必須給物體加上碰撞器,不然沒有效果

#2、示例

public int speen;private Vector3 targer;private bool isOver = true;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {//當按下鼠標左鍵的時候if (Input.GetMouseButtonDown(0)) {//根據屏幕坐標轉換世界坐標,生成一條射線返回Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//創建射線于游戲對象交叉時生成的信息接受類RaycastHit hit = new RaycastHit ();//如果射線于一個游戲對象碰撞交叉時,返回true為真,會把碰撞的信息out到hit對象中if (Physics.Raycast (ray, out hit)) {//從信息類中判斷游戲對象名字是否是地板if (hit.collider.name.Equals ("Plane")) {targer = hit.point; //把坐標賦值給目標對象targer.y = 0.5f; // 重新設置他的y坐標isOver = false; // 設置是否結束為false,這樣就會執行moveto方法了}}}//始終執行移動方法,只有當isOver == true的時候執行MoveTo (targer);}public void MoveTo(Vector3 vector3){//如果沒有結束if (!isOver) {//畫出一條Debug線,從自身延伸到目標的地方,連出一條線,這里說明一下,drawline只會繪畫一次,速度很快,如果要一直顯示,后面還有個duraline字段Debug.DrawLine(transform.position,vector3,Color.blue);//用目標向量 - 當前向量 , 獲取出兩個位置的差異向量Vector3 distance = vector3 - transform.position;//移動游戲對象到目標位置 //distance.normalized :確定方向//speen : 速度//Time.deltaTime : 確保一秒執行speen速度的距離transform.Translate (distance.normalized * speen * Time.deltaTime);//計算兩個點相差的距離,如果差別不大,就結束移動if (Vector3.Distance (vector3, transform.position) <= 0.1f) {isOver = true;transform.position = vector3; }}} 復制代碼

#3 射線的技巧 在執行 Physics.Raycast方法的時候,有個參數是int layerMask,這個參數是用于過濾掉不處理的層級的,但是也有一些講究,比如player層級,他要怎么表示這個層級呢,就比較用

1 << LayerMask.NameToLayer("player") 復制代碼Raycast (ray : Ray, out hitInfo : RaycastHit, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers)其實很簡單:1 << 10 打開第10的層。~(1 << 10) 打開除了第10之外的層。~(1 << 0) 打開所有的層。(1 << 10) | (1 << 8) 打開第10和第8的層。 復制代碼

射線碰撞檢測+LayerMask的使用

轉載于:https://juejin.im/post/5b3ac96d6fb9a025051946d0

總結

以上是生活随笔為你收集整理的Unity(射线)的全部內容,希望文章能夠幫你解決所遇到的問題。

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