歐派師K挨啊↗
[Unity3D] 想利用Unity的碰撞物理接觸判定(Collider),
但物件移動上想自行計算設定,
不想被物理質量設定(Rigidbody)攪局的一個半手動方式

※需要程式實裝就是
歐派師K挨啊↗
using UnityEngine;

UnityEngine.Physics
這個底下有很多物理計算輔助函式
歐派師K挨啊↗
譬如在場景上放顆3D球
標準內建有SphereCollider

然後放其他有Collider的3D物件,
譬如Cube(BoxCollider)

在C#內,Update()內也行,
不過物理計算更推薦FixedUpdate()內

Physics.CheckSphere(球位置,球半徑,判定對象Layer)
這樣球去碰到箱子時上述判斷條件就會為true
歐派師K挨啊↗
要注意的是
這只有程式上的接觸判定
要真的模擬物理狀態(箱子卡住球不給過甚至反彈)

請靠程式在上述接觸判定後實裝

從零開始的話絕對頭大
但一樣,Physics裡面提供很好用的計算函式
像要計算兩個Collider接觸&交點&反射法線的
用ComputePenetration即可
歐派師K挨啊↗
卡了兩天的打彈珠貫通彈問題
(用Rigidbody會堆積作用力出問題,加上call onCollisionEnter時,球的位置其實已經被移動到反射計算後了)

決定自己寫物理計算
但自己想真的想破頭,太多可能性跟條件跟狀況要顧

最終妥協手段就是
利用Unity的Collider(=類BoundingBox)
但只取其接觸效果
不放Rigidbody實際位置一切自行計算

也還好,半天就追上搞定算了一天半的成果
歐派師K挨啊↗
順帶一提乍看下會想
「Collider開IsTrigger不就不會被物理干擾了嗎?」

是沒錯
但問題是onTriggerEnter的引數
含的情報太少,
而且要引發Trigger還是要有一方必須有Rigidbody
兩邊都沒有的話接觸判定不會發生

用程式實裝則沒有這個問題
唾棄Rigidbody
載入新的回覆