您好,欢迎来到伴沃教育。
搜索
您的当前位置:首页Unity高速碰撞下位置偏移的处理

Unity高速碰撞下位置偏移的处理

来源:伴沃教育

发现问题

在使用Unity的物理碰撞时,会用到该方法:

void OnCollisionEnter2D(Collision2D coll){

//代码

}

在该代码加入:

Time.timeScale = 0.001f;

会发现在高速碰撞的时候,虽然执行了方法,但是有可能碰撞的两个物理之间有一段距离,如果这个时候需要严格的位置数据,显然是不靠谱的。

关于FixedUpdate

为什么会有距离?两个球的画面是怎么出来的?

查看OnCollisionEnter2D方法在生命周期中的情况。

可以看到,OnCollisionEnter2D确实是由Unity的物理引擎计算出来的并且执行的。

两个有距离的球怎么会有碰撞?难道是物理引擎的BUG?

通过Time.fixedDeltaTime可进行配置,默认是0.02,也就是说每秒50次物理运算。

我将其调整到Time.fixedDeltaTime = 0.015f来保证每秒有60次物理运算,BUG随即消失。

但是物理计算需要耗费CPU,注意别挑得太高。

Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务