1. 程式人生 > >Unity-Rigidbody【剛體】元件-Collision Detection碰撞檢測模式

Unity-Rigidbody【剛體】元件-Collision Detection碰撞檢測模式

所謂Collision Detection,顧名思義就是碰撞檢測。

然而有時候開發遊戲,對於高速運動的物體(比如:子彈/大炮,或者很高處自由落體的物體),即使再三確認加了Rigidbody元件,檢查了碰撞檢測的程式碼完全沒有錯誤,但仍然會出現 物體直接穿過另一個物體 的問題, 則說明這個碰撞檢測的程式對於高速運動的物體而言會出錯。

Unity物體的Rigidbody元件提供了一個Collision Detection的屬性,該屬性用於更改物體的碰撞檢測模式————一共有三種模式可以選擇(選擇你想要的模式,底層碰撞檢測的演算法均有差別)

(解釋一下,上圖每個箭頭兩端均指的是兩個即將碰撞的物體的Collision Detection屬性的值,箭頭中間的屬性值所指的是這兩個物體時間碰撞所用的碰撞檢測模式)

Discrete(離散型檢測模式)就是普通的預設狀態;

Continuous(連續檢測)則是更加精細的碰撞檢測,但是很耗資源;在這種狀態下,當這個剛體與其他普通剛體碰撞時,仍將使用Discrete的碰撞檢測,但是與沒有剛體的Mesh Collider碰撞時就會連續檢測了。

Continuous dynamic(動態連續檢測)則是對沒有剛體的Mesh Collider或是對處在Continuous或是Continuous Dynamic狀態下的剛體使用連續碰撞檢測,對其他的剛體使用普通的Discrete檢測。

但是!!!必須得注意的是:

1.Continuous/Continuous dynamic(連續檢測)

--對物理效能有很大的影響,所以如果高速運動的物體的碰撞沒有問題,應該設定為預設的 Discrete

2.Continuous/Continuous dynamic -- 只支援使用Box,Sphere和Capusle碰撞器的剛體。(這一點是在以往網上的資料上發現的,查了Unity2017最新版手冊,發現確實有說到Continuous支援Box,Sphere和Capusle)

對於指令碼中動態新增Rigidbody元件,可以通過以下程式碼對物體的碰撞模式進行修改:

rigidbody.collisionDetectionMode = CollisionDetectionMode.Discrete;//普通離散
rigidbody.collisionDetectionMode = CollisionDetectionMode.Continuous;//連續
rigidbody.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;//動態連續

總結:

Discrete適用於大部分剛體

Continuous適用於將有可能會被高速移動物體撞上的物體

Continuous Dynamic適用於高速移動的物體

使用連續碰撞檢測(ContinuousContinuous Dynamic)前提:

剛體和剛體:    剛體的碰撞器必須是Box,Sphere,Capusle.

剛體和非剛體(靜態碰撞器):    剛體物體的碰撞器必須是Box,Sphere,Capusle,非剛體物體的碰撞器必須是Mesh。


相關推薦

Unity-Rigidbody剛體元件-Collision Detection碰撞檢測模式

所謂Collision Detection,顧名思義就是碰撞檢測。 然而有時候開發遊戲,對於高速運動的物體(比如:子彈/大炮,或者很高處自由落體的物體),即使再三確認加了Rigidbody元件,檢查了碰撞檢測的程式碼完全沒有錯誤,但仍然會出現 物體直接穿過另一個物體 的

Unity-Rigidbody剛體元件-Rigidbody.AddForce的ForceMode 力的模式

ForceMode 力的模式 在unity中,Rigidbody.AddForce()實現對剛體物體施加力的效果,實現物體例如碰撞,爆炸等等效果 呼叫函式如下: public void Ad

swiper 元件說明

swiper 滑塊檢視容器,其原型如下: 1 <swiper 2 indicator-dots="[Boolean]" 3 indicator-color="[Color]" 4 indicator-active-color="[Color]" 5 autoplay="

HTC Vive unity 教程轉載

HTC Vive 是一個虛擬現實頭盔,由 HTC 和 Valve 公司製造。它提供一種在虛擬世界中的浸入式體驗,而不是螢幕頭像。 如果你是一個 Unity 開發者,在虛擬現實遊戲中使用 HTC Vive 非常簡單——你可以認為 HTC Vive 和 Uni

learnOpenCvFacial Landmark Detection:人臉特徵點檢測的一些應用

偶然看到的,感覺寫的很好,隨手大概內容翻譯轉過來,如有侵權請告知刪除。 原文連結:https://www.learnopencv.com/facial-landmark-detection/ 目前在計算機視覺領域,人臉方向的研究非常之多。人臉分析最常見的應用是人臉識別,但

iOS元件化程序之建立元件(Git)倉庫

前言    元件化開發已經在各個大小公司中普遍使用,尤其是一線大公司更是在忙不停的將原有專案中相對獨立功能抽取出來做成獨立元件。面試中也會經常問到元件化相關的知識, 在這裡我將通過一步步構建簡單的元件化專案來掌握這門技術。首先元件化的第一步就是需要將原有專案按照基礎層、業務層

Angular2元件互動

前言 在Angular開發中,我們經常會涉及到元件之間的互動,比如會引用自己部門開發的元件 有時候,我們需要向引用的元件裡面繫結一些資料,或者我們需要引用的子元件輸出一些資料 這時,我們就需要處理好元件之間的互動 元件互動的關鍵程式碼 父元件繫

IOC元件註冊(二)

當弄清楚有哪些方式可以往Spring容器中註冊元件之後,我們再來看一下和元件註冊相關的其他註解: @Scope @Lazy @Co

RabbitMQ4、幾種Exchange 模式

copy 消息發送 但是 net with .html ole img lis AMQP協議中的核心思想就是生產者和消費者隔離,生產者從不直接將消息發送給隊列。生產者通常不知道是否一個消息會被發送到隊列中,只是將消息發送到一個交換機。先由Exchange來接收,然後Exch

android開發學習 ------- android中的單例模式 (詳解)

lan post tail -- and 使用 href details android開發 https://blog.csdn.net/u011418943/article/details/60139644 這篇文章 前因後果 都說出來了 ,值得學習。 htt

IPv6鄰節點不可到達檢測學習(NUD)

交互 響應 time 定時器 協議 模塊 ipv 檢測方法 解析過程 鄰節點不可到達檢測鄰節點不可到達檢測方法有2種:1. 通過發送單播鄰節點請求報文和接收響應請求的鄰節點公告報文來完成。2. 借助上層協議確定可達性。(TCP) 通過NS/NA報文進行NUD檢測響應請求的鄰

RabbitMQ4、三種Exchange模式——訂閱、路由、通配符模式

message final 支持 sim 使用 完全 自己的 print ued 前兩篇博客介紹了兩種隊列模式,這篇博客介紹訂閱、路由和通配符模式,之所以放在一起介紹,是因為這三種模式都是用了Exchange交換機,消息沒有直接發送到隊列,而是發送到了交換機,經過隊列綁定交

UE4 第06講 碰撞事件響應

(版權宣告,禁止轉載)        今天實現了一下碰撞事件的響應問題,原本感覺陽光明媚,然而當打包到Android的時候,一下掉進了黑暗的深淵,UE4的安卓打包簡直是魔鬼,在真機上跑起來的時候和在電腦上的預覽效果有很大不同,Panda(我喜歡功夫熊貓

模板AC自動機(多少個模式串在文字串裡出現過)

#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<queue> #include<

IO- IO 體系中的設計模式-介面卡模式

前言     之前的部落格說到了介面卡模式的概念和UML類圖,這次來聊下IO中的介面卡模式。 正文 IO流體系介紹     InputStreamReader 和OutputStreamWriter 類分別繼承了Reader和Writer 介面,但是

AMQ 二:點對點模式Dome

AMQ通訊分為兩種,一種是點對點模式,另一種是釋出訂閱模式,本文主要介紹點對點模式和簡單實現。 什麼是點對點模式? 點對點模式是AMQ的一種通過佇列方式通訊的模式, 即生產者會把生產的訊息放在某個佇列中,消費者從佇列中取得訊息進行通訊的方式。 基本實現: 生產者

LVS的三種工作模式_DR模式

1.DR模式(直接路由模式:Virtual Server via Direct Routing)    DR模式是通過改寫請求報文的目標MAC地址,將請求發給真實伺服器的,而真實伺服器響應後的處理結果直接返回給客戶端使用者。同TUN模式一樣, DR模式可以極大的提高集群系統的伸縮性。而且DR模式沒有IP隧

LVS的三種工作模式_TUN模式

1.TUN模式(Virtual Server via IP Tunneling)   採用NAT模式時,由於請求和響應的報文必須通過排程器地址重寫,當客戶請求越來越多時,排程器處理能力將成為瓶頸。為了解決這個問題, 排程器把請求的報文通過IP隧道轉發到真實的伺服器。真實的伺服器將響應處理後的資料直接返回給

IDEintelli idea總是進入vim模式,shift不能選擇文字

Intellij Idea, 每次開啟檔案都進入了vim模式,必須輸入a才可編輯,shift+上下箭頭不能選中行,實在是非常困擾。 看了設定裡面的keymap是[mac os],shift+箭頭預設也是可以選擇的。最後在stack over flow上面查到了

Shellsed 同時匹配多個模式

之前在 【Linux】sed 命令最全解析 這篇文章中有提到,使用 sed 實現多個匹配的方法,但是寫的並不全,在此重新補充一下。 sed 命令功能非常強大,通常用於匹配和編輯文字。 預設情況下,一條 sed 命令只能匹配一個模式(模式即匹配規則的意思)。 怎麼用 sed 實