国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity中Physics.Raycast 的使用

這篇具有很好參考價值的文章主要介紹了Unity中Physics.Raycast 的使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

Unity中Physics.Raycast 的使用,unity,游戲引擎,c#

Physics.Raycast?簡介? ? ▼

Physics.Raycast?官方文檔中提供的參數(shù)如下??

Unity中Physics.Raycast 的使用,unity,游戲引擎,c#

Unity中Physics.Raycast 的使用,unity,游戲引擎,c#

?Physics.Raycast?從指定的位置發(fā)射一條射線,如果射線與物體發(fā)生碰撞返回true否則返回false

其中射線的起點(diǎn),方向是不可以省略的,其他參數(shù)可以省略

案例▼

  • 第1,2個參數(shù)定義了一條射線的起點(diǎn)與方向
  • 第3個參數(shù)為RaycastHi用以從射線獲取參數(shù)
    RaycastHit hit;
    void Update()
    {
        //如果檢測到物體
        if (Physics.Raycast(transform.position, transform.forward, out hit))
        {
             Debug.Log(hit.collider);//命中的 Collider。
            //打印一條從物體到碰撞點(diǎn)的紅色射線,hit.point世界空間中射線命中碰撞體的撞擊點(diǎn)
            Debug.DrawLine(transform.position, hit.point, Color.red);
        }
        else //沒有檢測到物體
        {
            //打印一條從物體出發(fā)的黃色射線
            Debug.DrawRay(transform.position, transform.position + transform.forward * 100, Color.yellow);
        }
    }

運(yùn)行效果如下 可以看到射線與其他物體碰撞變成紅色 ▼?

Unity中Physics.Raycast 的使用,unity,游戲引擎,c#

也可以直接定義一條射線ray替換1,2條參數(shù)。下面的代碼與上面的代碼功能相同

    Ray ray;
    RaycastHit hit;
    void Update()
    {
        ray = new Ray(transform.position, transform.forward);
        //如果檢測到物體
        if (Physics.Raycast(ray, out hit))
        {
             Debug.Log(hit.collider);//輸出命中的 Collider。
            //打印一條從物體到碰撞點(diǎn)的射線,hit.point世界空間中射線命中碰撞體的撞擊點(diǎn)
             Debug.DrawLine(ray.origin, ray.origin + ray.direction * 100,Color.red);
        }
        else //沒有檢測到物體
        {
            Debug.DrawLine(ray.origin, ray.origin + ray.direction * 100, Color.yellow);
        }
    }

給射線設(shè)置一個檢測距離之后,射線距離之外的物體不會發(fā)生碰撞

?Physics.Raycast(ray, out hit,3)(可以看到射線碰撞到第一個方塊之后變?yōu)榧t色,碰撞到第二個方塊后沒有改變,這是因為第二個方塊超出了射線檢測范圍)▼

Unity中Physics.Raycast 的使用,unity,游戲引擎,c#

?給Physics.Raycast設(shè)置一個遮罩參數(shù)之后可以有選擇的忽略碰撞體。

(Physics.Raycast(ray, out hit, 10, mask)

這里我們給正方體Layer設(shè)置為Default,球形Layer設(shè)置為Sphere。之后選定Mask為Sphere

Unity中Physics.Raycast 的使用,unity,游戲引擎,c#

    Ray ray;
    RaycastHit hit;
    public LayerMask mask;
    void Update()
    {
        ray = new Ray(transform.position, transform.forward);
        //如果檢測到物體 
        if (Physics.Raycast(ray, out hit, 10, mask))
        {
            Debug.Log(hit.collider);//輸出命中的 Collider。
            //打印一條從物體到碰撞點(diǎn)的射線,hit.point世界空間中射線命中碰撞體的撞擊點(diǎn)
            Debug.DrawLine(ray.origin, ray.origin + ray.direction * 100,Color.red);
        }
        else //沒有檢測到物體
        {Debug.DrawLine(ray.origin, ray.origin + ray.direction * 100, Color.yellow);
        }
    }

?運(yùn)行效果如下,射線在接觸到正方體是沒有發(fā)生改變,接觸到球形時變?yōu)榧t色▼

Unity中Physics.Raycast 的使用,unity,游戲引擎,c#

為Physics.Raycast設(shè)置一個QueryTriggerInteraction.Ignore參數(shù)之后,射線不在檢測觸發(fā)器

?▼操作如下▼

為紅色方塊選擇Is Triggr屬性。藍(lán)色方塊不選。

Unity中Physics.Raycast 的使用,unity,游戲引擎,c#

  • ?QueryTriggerInteraction.Collide 檢測觸發(fā)器
  • ?QueryTriggerInteraction.Ignore 不檢測觸發(fā)器
     Ray ray;
    RaycastHit hit;
    public LayerMask mask;
    void Update()
    {
        ray = new Ray(transform.position, transform.forward);
        //如果檢測到物體  
        //QueryTriggerInteraction.Collide 檢測觸發(fā)器
        //QueryTriggerInteraction.Ignore 不檢測觸發(fā)器
        if (Physics.Raycast(ray, out hit, 10, mask, QueryTriggerInteraction.Ignore))
        {
            Debug.Log(hit.collider);//輸出命中的 Collider。
            //打印一條從物體到碰撞點(diǎn)的射線,hit.point世界空間中射線命中碰撞體的撞擊點(diǎn)
            Debug.DrawLine(ray.origin, ray.origin + ray.direction * 100,Color.red);
        }
        else //沒有檢測到物體
        {
            Debug.DrawLine(ray.origin, ray.origin + ray.direction * 100, Color.yellow);
        }
    }

運(yùn)行效果如下▼ (射線碰撞到紅色方塊時沒有發(fā)生改變,碰撞到藍(lán)色方塊變?yōu)榧t色)

Unity中Physics.Raycast 的使用,unity,游戲引擎,c#

Physics.Raycast?的使用? ?▼

  • 配合尋路導(dǎo)航系統(tǒng),做移動到鼠標(biāo)點(diǎn)擊位置功能

---Unity中尋路導(dǎo)航的基本使用

Unity中Physics.Raycast 的使用,unity,游戲引擎,c#文章來源地址http://www.zghlxwxcb.cn/news/detail-716177.html

        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;
                    }
                }
            }
        } 

到了這里,關(guān)于Unity中Physics.Raycast 的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • DOTS Unity.Physics物理引擎碰撞事件處理

    最近DOTS發(fā)布了正式的版本,同時基于DOTS的理念實(shí)現(xiàn)了一套高性能的物理引擎,今天我們給大家分享和介紹一下這個物理引擎的碰撞事件處理以及核心相關(guān)概念。 Unity.Physics 物理引擎的主要流程與P ipeline ? Unity.Physics物理引擎做仿真迭代計算的時候主要通過以下步驟來執(zhí)行: ??

    2024年01月18日
    瀏覽(26)
  • DOTS Unity.Physics物理引擎碰撞查詢核心分析

    DOTS Unity.Physics物理引擎碰撞查詢核心分析

    ??最近DOTS發(fā)布了正式的版本,同時基于DOTS的理念實(shí)現(xiàn)了一套高性能的物理引擎,今天我們給大家分享和介紹一下這個物理引擎的碰撞查詢以及核心相關(guān)概念。 Unity.Physics碰撞查詢概述 ??碰撞查詢(Collison Qurey)是Unity.Physics物理引擎中的一個很重要的功能。很多游戲邏輯都需

    2024年04月25日
    瀏覽(22)
  • DOTS Unity.Physics物理引擎的核心分析與詳解

    DOTS Unity.Physics物理引擎的核心分析與詳解

    最近DOTS發(fā)布了正式的版本,同時基于DOTS的理念實(shí)現(xiàn)了一套高性能的物理引擎,今天我們來給大家分享和介紹一下這個物理引擎的使用。 Unity.Physics 的設(shè)計哲學(xué) Unity.Physics是基于DOTS設(shè)計思想的一個高性能C#物理引擎的實(shí)現(xiàn), ?包含了物理剛體的迭代計算與碰撞檢測等查詢。Unity.

    2024年03月18日
    瀏覽(29)
  • 使用團(tuán)結(jié)引擎開發(fā)Unity 3D射擊游戲

    使用團(tuán)結(jié)引擎開發(fā)Unity 3D射擊游戲

    ? ? ? ?本案例是初級案例,意在引導(dǎo)想使用unity的初級開發(fā)者能較快的入門,體驗unity開發(fā)的方便性和簡易性能。 ? ? ? 本次我們將使用團(tuán)結(jié)引擎進(jìn)行開發(fā),幫助想體驗團(tuán)結(jié)引擎的入門開發(fā)者進(jìn)行較快的環(huán)境熟悉。 ? ? ?本游戲是一個俯視角度的射擊游戲。主角始終位于屏幕

    2024年01月19日
    瀏覽(110)
  • Unity 關(guān)于Ray、RaycastHit、Raycast及其使用

    Unity 關(guān)于Ray、RaycastHit、Raycast及其使用

    Unity中,我們要進(jìn)行物理模擬和碰撞檢測時,有三個重要的概念Ray、RaycastHit、Raycast。 其中,Ray可以理解為射線,它是一條從起點(diǎn)沿著特定方向延伸的無限長線段。 它的語法是: 它定義了兩個參數(shù),一個起點(diǎn)位置和一個方向,通過Ray射線,可以用來模擬子彈、光線、玩家視線

    2024年02月03日
    瀏覽(29)
  • Physics.Raycast

    Physics.Raycast 是 Unity 中用于檢測物體之間碰撞的函數(shù)之一。它使用一條射線來檢測場景中的物體,返回一個 bool 值表示是否檢測到了碰撞,以及一個 RaycastHit 結(jié)構(gòu)體存儲著射線碰撞到的物體的信息。 Physics.Raycast 的完整簽名如下: 該函數(shù)的參數(shù)如下: ray :一條用于檢測碰撞的

    2024年02月12日
    瀏覽(18)
  • 關(guān)于Unity Physics.CheckBox的使用方法

    關(guān)于Unity Physics.CheckBox的使用方法

    在UnityAPI手冊中Physics.CheckBox是Unity Physics類中的一個方法,該方法擁有四個重載,用于檢查給定的盒體是否與其他碰撞體重疊。 public static bool CheckBox (Vector3 center, Vector3 halfExtents, Quaternion orientation= Quaternion.identity, int layermask= DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteracti

    2024年01月21日
    瀏覽(30)
  • 十八、Unity游戲引擎入門

    十八、Unity游戲引擎入門

    1、下載 ?? ?首先需要下載Unity Hub,下載網(wǎng)址:https://unity.com/cn。 ?? ?然后在其中下載Unity編輯器并安裝,可選擇最新版本。 ?? ?接著需要選擇適合的開發(fā)環(huán)境,例如Android Studio或Xcode,以便進(jìn)行手機(jī)游戲開發(fā)。在安裝完Unity后,需要根據(jù)項目需求下載對應(yīng)的模塊和插件,例

    2024年02月16日
    瀏覽(117)
  • Unity、UE、Cocos游戲開發(fā)引擎的區(qū)別

    Unity、Unreal Engine(UE)和Cocos引擎是三個常用的游戲開發(fā)引擎,它們在功能和特性上有一些區(qū)別。以下是它們之間的主要區(qū)別: 編程語言:Unity使用C#作為主要的編程語言,開發(fā)者可以使用C#腳本進(jìn)行游戲邏輯編寫。Unreal Engine主要使用C++作為編程語言,但也支持藍(lán)圖系統(tǒng),允許

    2024年02月22日
    瀏覽(99)
  • Unity UGUI的Physics2DRaycaster (2D物理射線檢測)組件的介紹及使用

    Physics2DRaycaster是Unity中的一個UGUI組件,用于在2D場景中進(jìn)行物理射線檢測。它可以檢測鼠標(biāo)或觸摸事件在UI元素上的碰撞,并將事件傳遞給相應(yīng)的UI元素。 Physics2DRaycaster通過發(fā)射一條射線來檢測UI元素的碰撞。當(dāng)射線與UI元素相交時,Physics2DRaycaster會將事件傳遞給相應(yīng)的UI元素,

    2024年02月15日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包