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

发现问题

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

void OnCollisionEnter2D(Collision2D coll){

//代码

}

在该代码加入:

Time.timeScale = 0.001f;

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

关于FixedUpdate

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

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


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

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

后来通过stackoverflow了解到,FixedUpdate的执行时间是可配置的,距离的产生主要是FixedUpdate的执行频率较小。

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 111. [动画系统]如何将其他类型的动画转换成关键帧动画? 动画->点缓存->关键帧 112. [动画]Unit...
    胤醚貔貅阅读 13,203评论 3 89
  • This article is a record of my journey to learn Game Deve...
    蔡子聪阅读 3,875评论 0 9
  • 原文地址 http://www.fx114.net/qa-75-172454.aspx 使用Profiler工具...
    IongX阅读 5,928评论 1 11
  • ❶ “我为什么会在这里?” ——粉红小姐给我发了一条私信。 入夜,傍晚,“粉红小姐”躲在她的阁楼上,没有开灯,敞开...
    粉红小姐Sunday阅读 816评论 2 3
  • 缕缕幽香 引我入院 山茶花,见我 纷纷仰起红艳艳的小脸 盼我向前 木春菊,摆动着腰肢 迎风起舞 望着竹林深处 脚边...
    zero素人阅读 230评论 0 0