1. 程式人生 > >Unity 碰撞體和剛體的區別(應用)

Unity 碰撞體和剛體的區別(應用)

很多初學者都會問這麼一個問題,那就是碰撞體和剛體到底有什麼區別,以及如何應用

兩句話概括碰撞體:
碰撞體才能被射線檢測到,否則無法被檢測
碰撞體是產生碰撞的前提

兩句話概括剛體:
需要模擬重力的自由下落時,新增剛體
物體間發生碰撞時,主動體身上必須新增剛體

不管是哪一種Collider,都有 IsTrigger屬性,注意,在發生碰撞的兩個物體中,不管是一個物體勾選IsTrigger屬性,還是兩個物體同時勾選這個屬性,效果都是一樣,勾選上,碰撞時會互不影響的相互穿插過去,如不勾選,在碰撞時,碰撞體之間誰也不讓誰,相互僵持

落實到實際開發中就分如下兩種情況:

主動體(碰撞體+剛體) +被動體(碰撞體)+勾選IsTrigger屬性+OnTriggerEnter

因為勾選IsTigger屬性,所以發生碰撞時,碰撞體之間可以互不影響的相互穿插過去,但是碰撞那一刻,OnTiggerEnter函式會被觸發,Collider引數代表的是沒有掛指令碼的那個物件

主動體(碰撞體+剛體)+被動體(碰撞體)+OnCollisionEnter

因為沒有勾選IsTigger屬性,所以發生碰撞時,碰撞體之間不能夠相互穿插,碰撞的那一瞬間,OnCollisionEnter函式會被觸發,Collision引數代表的是沒有掛指令碼的那個物件

下面就做一個簡單的demo

在場景中建兩個物件,一個正方體,一個球體 ,兩個物件都是碰撞體
然後在正方體上新增一個剛體,並且把剛體的重力去掉

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

此時執行場景,在Scene視窗中,拖動正方體,主動碰撞球體,結果如下:
這裡寫圖片描述

我只測試上面這一種情況,你也可以繼續做如下測試:
測試一:將上面的主動體中的剛體去掉,新增到被動體上,看看結果
測試二:將上面指令碼中OnCollisionEnter換成OnTriggerEnter,看看結果
測試三:將上面指令碼中碰撞體屬性IsTrigger勾選任意一個,看看結果
測試四: 測試二+測試三 結合起來,看看結果

FR:徐海濤(Hunk Xu) QQ技術群:386476712

相關推薦

Unity 碰撞剛體區別(應用)

很多初學者都會問這麼一個問題,那就是碰撞體和剛體到底有什麼區別,以及如何應用 兩句話概括碰撞體: 碰撞體才能被射線檢測到,否則無法被檢測 碰撞體是產生碰撞的前提 兩句話概括剛體: 需要模擬重力的自由下落時,新增剛體 物體間發生碰撞時,主動體

unity碰撞檢測觸發器的方法函式

碰撞檢測涉及三個函式: 當與物體碰撞的一瞬間:OnCollisionEnter(Collision  collision),collisionInfo是撞到的物體的碰撞資訊; 當在與物體持續碰撞接觸期間:OnCollisionStay(Collision collisio

結構區別

樓上說的很詳細 結構和類有什麼區別呢. 結構和類一樣 都同等於一個自定義類 但是結構是值型別 如果你在結構中有一個int a 你寫上一句int B = a的話 他們的值會是一樣 但是不管你怎樣改變其中的一個 另外一個也不受影響 因為這是值型別(基本資料型別) B只是a的值的副本 如果是類的

C#中結構區別聯絡

結構體 結構體定義 結構體是一種值型別,通常用來封裝小型相關變數組。例如座標或者商品的特徵。 結構體是一種自定義的資料型別,相當於一個複合容器,可以儲存多種型別。 結構體由結構體成員構成,結構體成員包含欄位,屬性與方法 結構體建

unity碰撞檢測觸發資訊

兩個物體發生碰撞,如果要檢測到碰撞資訊,那麼其中必有一個物體既帶有碰撞器,又帶有剛體,且檢測碰撞資訊的指令碼必須附著在帶有剛體的碰撞器上。 兩個GameObject發生碰撞,要想檢測到觸發資訊,最少要有一個剛體碰撞器並且勾選了IsTrigger複選框,另一個最少要有一個碰撞

Unity中的UI的《button》《Slider》用指令碼新增碰撞

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;/// <summary>/// 給所有的按鈕建立碰撞體/// <

用更通俗的方式來教你理解剛體碰撞

對於剛接觸Unity3D的新手,部分人會在3D的物理元件的理解中弄混剛體(rigidbody)和碰撞體(collider)這兩者。網路上很多相關文章,個人認為邏輯條理清晰,但推薦給別人後仍然會有人說沒有很大幫助。究其原因,應該是大部分文章是以unity中元件的特

結構類的區別,聯系

變量賦值 屬性 left 運行 效率 整體 如果 場景 區別 結構體和類的共同點:都可以將多個數據封裝為一個整體結構體和類的不同點: 結構體只能封裝數據,而類還可以封裝行為; 結構體實例是值類型,類實例是對象類型 結構體實例存儲在棧空間,類實例存儲在堆空間 結構體變量賦值

結構類的唯一區別就是類函數沒有加說明是私有而結構函數是公有

com ref www 沒有 a20 www. itl post tro 結構體和類的唯一區別就是 沒有加說明 類函數 是 私有 而結構體函數是公有結構體和類的唯一區別就是類函數沒有加說明是私有而結構體函數是公有

Unity中WaitUntilWaitWhile的區別

ges .com true sta 區別 return lambda alt es2017 環境說明:在協程中使用Yield return new WaitUntil(...)和Yield return new WaitWhile(...) 為了看的更清楚,這裏不用lamb

C# 結構類的區別

字段 long 姓名 table 衡量 int 結構體 需要 操作 第一個問題:,“結構體”和“類”有啥區別?怎樣辨別是結構體還是類!結構體是一種值類型,而類是引用類型。(值類型、引用類型是根據數據存儲的角度來分的)就是值類型用於存儲數據的值,引用類型用於存儲對實際數據的引

淺談c++中結構共用區別

ont 基本類型 erl list 變量名 ext 使用結構體 oot 數據格式 在c++中,結構體(struct)和共用體(union)是兩種很相似的復合數據類型,都可以用來存儲多種數據類型,但是兩者還有很大的區別。 結構體(struct) 結構是用戶自定

.net core學習筆記《sdkruntime區別及使用CLI在Ubuntu上快速搭建Console,WebApi,MVC三大應用模型》

img 裝包 new 來看 tin console bubuko file 接下來 一、需要安裝的軟件 1、虛擬機安裝Ubuntu系統(本人用的是vmware-14.1.12和buntu-18.04) 2、Xshell或 Putty(連接ssh服務) 3、FileZilla

spring classpath:classpath*:區別實際應用

classpath:和classpath*:的含義 classpath: :表示從類路徑中載入資源,classpath:和classpath:/是等價的,都是相對於類的根路徑。資原始檔庫標準的在檔案系統中,也可以在JAR或ZIP的類包中。 classpath*::假設多個JAR包或檔

python3:set frozenset的應用場景及區別

set 是集合,frozenset 是凍結的集合,顧名思義是不可變集合。 set 最大的特性是不重合,在去重的時候用的最多。 1.接受一個可迭代的型別 先簡單的看下class 的說明如下: class set(object): """ set() ->

MybatisHibernate區別應用場景

hibernate: 是一個標準的ORM框架(物件關係對映)。入門門檻較高,不需要程式寫sql語句,sql語句自動生產了。 特點: 對sql的優化比較困難。 Hibernate對物件的維護和快取要比MyBatis好,對增刪改查的物件的維護要方便。 Hibernate資料庫移植性很好,MyB

==equals方法的區別以及IntegerString的應用

==和equals方法的區別以及Integer和String的應用 == 比較的是兩個物件的地址記憶體地址,而equals比較的是兩個物件的值。 例如String的equals比較方法,先呼叫==判斷是否相同,然後再判斷物件value的char陣列是否相同。 建議:比較兩個物件是否相

[Objective-C]strong、copy在NSArrayNSMutableArray的應用區別

兩個問題 1. 使用strong修飾NSArray會有什麼問題? 2. 使用copy修飾NSMutableArray會有什麼問題? 1. 使用strong修飾NSArray的問題 // // StrongCopyTest.h // StudyRuntim

springcloud中zuulfeign的應用場景區別

1、zuul作為整個應用的流量入口,接收所有的請求,如app、網頁等,並且將不同的請求轉發至不同的處理微服務模組,其作用可視為nginx。 2、feign則是將當前微服務的部分服務介面暴露出來,並且主要用於各個微服務之間的服務呼叫。 兩者的應用層次以及原理均不相同。 3.zuul也含有hys

C語言結構C++類的區別

1.C的結構體和C++結構體的區別 1.1 C的結構體內不允許有函式存在,C++允許有內部成員函式,且允許該函式是虛擬函式。所以C的結構體是沒有建構函式、解構函式、和this指標的。 1.2 C的結構體對內部成員變數的訪問許可權只能是public,而C++允許public,protec