因此,鑒于 Physics.OverlapBox 的位置、半范圍和旋轉,我將如何在螢屏上繪制它以進行除錯。
如果我的重疊框總是旋轉到 Quaternion.identity 這將非常容易,我可以簡單地呼叫帶有位置和半范圍的 Gizmos.DrawWireCube。但是它的方向不正確。據我了解,我可能需要先設定 Gizmos.matrix ,但還沒有找到任何可行的方法。
所以給定我們重疊框的這些值
1) position
2) rotation
3) halfextents
我猜我需要填寫這些才能在螢屏上繪制它
Gizmos.matrix = ?
Gizmos.DrawWireCube(?, ?)
我嘗試了很多不同的值和組合,但沒有任何效果。有誰知道解決方案或可以讓我走上正確的軌道?也許我完全走錯了路。任何建議表示贊賞。
編輯:注意我可以在螢屏上繪制一個 gizmos.wirecube 并查看它,這沒問題。然而,由于我希望它正確定位,我開始使用 Gizmos.matrix。這樣做之后,我猜它突然消失在螢屏外,因為我在任何地方都找不到它。
uj5u.com熱心網友回復:
聽起來你可以使用例如Matrix4x4.TRS
var oldMatrix = Gizmos.matrix;
// create a matrix which translates an object by "position", rotates it by "rotation" and scales it by "halfExtends * 2"
Gizmos.matrix = Matrix4x4.TRS(position, rotation, halfExtends * 2);
// Then use it one a default cube which is not translated nor scaled
Gizmos.DrawWireCube(Vector3.zero, Vector3.one);
Gizmos.matrix = oldMatrix;
在位置,旋轉和比例實際上來自Transform
類似的情況下作為替代,例如
Transform someTransform;
var rotation = someTransform.rotation;
var position = someTransform.position;
var halfExtends = someTransform.lossyScale * 0.5f;
在這種情況下,您也可以簡單地使用
Gizmos.matrix = someTransform.localToWorldMatrix;
Gizmos.DrawWireCube(Vector3.zero, Vector3.one);
這基本上意味著將這個 1 1 1 立方體放在給定變換的區域空間中,并使用給定矩陣將其“投影”到世界空間中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/469049.html