关于这个错误,我唯一知道的是用户CrimsonFreak在一个类似的问题中告诉我的:“错误的字面意思是,无论det是什么,其绝对值都不上级统一系统代码中的FLT_MIN。”(tysm btw,非常赞赏〈3)。当玩家的速度变化太快时,例如当以足够高的速度撞到另一个物体时,错误似乎会出现。我通过将物理材质的弹性更改为0暂时解决了这个问题,但现在错误又回来了,我设法挑出错误是由我的动态FOV引起的,下面是代码:
void Update()
{
if (playerPosition == null)
{
return;
}
else
{
gameObject.GetComponent<Camera>().fieldOfView = newFieldOfView();
}
}
private float newFieldOfView()
{
float speed = player.GetComponent<Rigidbody>().velocity.z + 6;
float targetFOV = (float)Math.Log(speed, 1.1) + 34;
return (Mathf.Lerp(GetComponent<Camera>().fieldOfView, targetFOV, (float)0.1));
}
所以我的问题是为什么这会让引擎感到困惑呢我尝试将其更改为FixedUpdate()函数,但这并没有改变任何东西。此外,当然将非常感谢用于制作简单动态FOV的其他方式的任何解决方案/建议。感谢所有人的帮助和帮助:)
1条答案
按热度按时间bxjv4tth1#
我不能完全复制您的问题,但我怀疑问题可能与对数函数有关,因为Log(0)=NaN,这可能会导致问题。负速度也应该是个问题。..我建议将新FOV值箝位到可行范围。