Unity 踩坑记录

227 阅读1分钟

【坑】GetComponent返回的null不是真null。

var rb = GetComponent<rigidbody>();
if(rb is null) //物体不论是否有刚体都返回false,因为rb拿到的是一个假null
{
 //Do something
}

参考链接:www.coder.work/article/295…

【坑】math.lerp和Mathf.lerp的区别

尽管两者都是做线性插值,通过源码发现。

math.lerp的公式是: a+ t * (b - a)

Mathf.lerp的公式是: a + (b - a) * Mathf.Clamp01(t)。

也就是说使用math.lerp,差值的结果会随着t的增大而增大,且可以超过b。同样的,math.lerp的差值结果也可以小于a。

【坑】投掷的武器会穿过玩家,不触发碰撞的原因

在Unity中,FixedUpdate是一个非常重要的函数,在每个固定的时间间隔内被调用,用于物理模拟和更新。

检查发现,游戏的fixedUpdateTime被设置成了1/15,降低了物理模拟的帧率,影响了物理检测的效果。导致了武器可能会穿过玩家。

【坑】物理检测有可能会检测不到初始位置的物体,需要对初始位置做一个偏移,尽量避免初始位置就是要检测的目标位置。