如何在Unity中高速碰撞对象

Kec*_*Kec 12 android unity-game-engine

我尝试为Android创建游戏,我对高速物体有问题,他们不想碰撞.

我有Sphere Collider和Bouncy材质的Sphere,以及带有此param的RigidBody(Gravity = false,Interpolate = Interpolate,Collision Detection = Continuous Dynamic)

此外,我有3个墙壁与Box Collider和Bouncy材料.

这是我的Sphere代码

function IncreaseBallVelocity() {
rigidbody.velocity *= 1.05;
}

function Awake () {
rigidbody.AddForce(4, 4, 0, ForceMode.Impulse);

InvokeRepeating("IncreaseBallVelocity", 2, 2);
}
Run Code Online (Sandbox Code Playgroud)

在项目设置中,我设置:"惩罚力的最小渗透率"= 0.001,"解算器交互计数"= 50

当我在开始时玩它很好(它会反弹)但是当速度变高时,Sphere就会越过墙壁.

谁能帮我?

谢谢.

编辑

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);
}
Run Code Online (Sandbox Code Playgroud)

EDITED添加了更多信息

  1. 固定时间步长= 0.02最大允许Tir = 0.333
  2. 在编辑器和Android上运行游戏没有区别
  3. 不,我设置0.01时看起来不错
  4. 我的桨是没有刚体的箱式碰撞机,墙壁是相同的
  5. 所有在同一层(当速度正常时它都工作)PhysicsManager中的值是默认值(在图像中相同)exept"Solver Interation Co ..."= 50
  6. 不.当我改变速度时,它通过其他墙壁
  7. 我正在使用标准立方体,但我扩展/缩小它以适应我的屏幕和其他对象,当我更多地扩展墙壁然后它可以它弹跳
  8. 不,这是来自Video http://www.youtube.com/watch?v=edfd1HJmKPY的简单项目简单示例
  9. 我不使用重力

Jer*_*dak 5

看:

  1. 类似的问题
  2. 使用光线追踪来帮助管理快速对象的社区脚本
  3. UnityAnswers 帖子导致 (2) 中的脚本

您还可以尝试更改物理的固定时间步长。该值越小,Unity 计算场景物理的次数就越多。但请注意,将此值设置得太小(例如 <= 0.005)可能会导致游戏不稳定,尤其是在便携式设备上。

上面的脚本最适合子弹或小物体。您可以手动强制刚体碰撞测试:

public class example : MonoBehaviour {
    public RaycastHit hit;
    void Update() {
        if (rigidbody.SweepTest(transform.forward, out hit, 10))
            Debug.Log(hit.distance + "mts distance to obstacle");

    }
}
Run Code Online (Sandbox Code Playgroud)