我尝试为Android创建游戏,但是遇到高速物体碰撞问题。
我有一个带有Sphere Collider和Bouncy材质的球体,以及一个具有以下参数(Gravity=false,Interpolate=Interpolate,Collision Detection = Continuous Dynamic)的RigidBody。
此外,我还有3个带有Box Collider和Bouncy材质的墙壁。
这是我的球体代码。
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);
}
编辑:增加更多信息
- 固定时间步长=0.02,允许的最大TIR=0.333。
- 在编辑器和安卓设备上运行游戏没有区别。
- 不是这样。当我设置为0.01时看起来还好。
- 我的挡板是一个没有刚体的盒子碰撞体,墙也是一样的。
- 它们都在同一层中(当速度正常时都可以工作),PhysicsManager中的值都是默认值(与图像中相同),除了“ Solver Interation Co...”=50。
- 不是这样。当我改变速度时,它会穿过其他墙壁。
- 我使用标准立方体,但我会扩展/缩小它以适应我的屏幕和其他物体,当我将墙扩展得更多时,它就会弹跳。
- 不是这样。这是从视频http://www.youtube.com/watch?v=edfd1HJmKPY中的简单项目示例。
- 我不使用重力。