我嘗試爲Android創建遊戲,並且遇到高速物體的問題,他們不想碰撞。如何在Unity中以高速碰撞物體
我有球體與球撞機和快活材料,和剛體與此PARAM(比重=假,插值=插值,碰撞檢測=連續動態)
另外我有3周壁與盒撞機和快活材料。
這是我的球
function IncreaseBallVelocity() {
rigidbody.velocity *= 1.05;
}
function Awake() {
rigidbody.AddForce(4, 4, 0, ForceMode.Impulse);
InvokeRepeating("IncreaseBallVelocity", 2, 2);
}
代碼在項目設置我設置:「閩滲透懲罰力」 = 0.001,「求解互爲作用計數」 = 50
當我開始玩它工作得很好(它會彈跳),但當速度變得很高時,球體就會穿過牆壁。
任何人都可以幫助我嗎?
謝謝。
編輯
var hit : RaycastHit;
var mainGameScript : MainGame;
var particles_splash : GameObject;
function Awake() {
rigidbody.AddForce(4, 4, 0, ForceMode.Impulse);
InvokeRepeating("IncreaseBallVelocity", 2, 2);
}
function Update() {
if (rigidbody.SweepTest(transform.forward, hit, 0.5))
Debug.Log(hit.distance + "mts distance to obstacle");
if(transform.position.y < -3) {
mainGameScript.GameOver();
//Application.LoadLevel("Menu");
}
}
function IncreaseBallVelocity() {
rigidbody.velocity *= 1.05;
}
function OnCollisionEnter(collision : Collision) {
Instantiate(particles_splash, transform.position, transform.rotation);
}
EDITED增加了更多的信息
- 固定時間步長= 0.02最大允許的Tir = 0.333
- 有一個在編輯器播放器和運行在Android上的遊戲沒有什麼區別
- 編號當我設置爲0.01時,它看起來不錯
- 我的槳板是沒有剛體的箱子對撞機,牆壁都是一樣的
- 所有在同一層(當速度正常時,它的全部工作)在PhysicsManager中的值是默認的(與圖像中的相同)exert「Solver Interation Co. ..「= 50
- 沒有當我改變速度它通過其他牆
- 我使用標準的立方體,但我擴大/縮小它,以適應我的屏幕和其他對象,當我擴大牆壁,然後它可以彈跳
- 編號這是簡單的項目簡單的例子從視頻http://www.youtube.com/watch?v=edfd1HJmKPY
- 我不使用重力
我嘗試設置爲物理0.01固定時間步長和它的工作,現在球可以站在更但是當它加快我有同樣的問題。 我嘗試DontGoThroughThings但我不確定這是正確的方式,我只是在我的Sphere JS腳本中複製代碼,我需要設置更多的東西嗎? – Kec
@Kec不,只要你的球體有一個剛體組件。腳本只對非常粗糙的測試有用。使用什麼可能是你的對象的中心進行測試,但由於你有一個球體,你可以輕鬆地射出,最近的命中,如果該命中是<你的球體的半徑,停止球體 – Jerdak
我嘗試各種但它沒有工作,現在我有這個代碼,所以你可以告訴我要改變什麼,我給代碼添加代碼灰。感謝幫助。 – Kec