unity3d “屏幕位置超出视锥”错误,然后是“表达式Assert失败:'标准::绝对值(检测)>FLT_MIN'“- Unity 3d

mbzjlibv  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(272)

所以在我的游戏中,你是一个球体滚下斜坡,但如果你走得太快,撞到一个突出的游戏冻结,主机得到垃圾邮件的标题中的第一个错误,其次是第二个。我设法找到了什么代码行导致这个问题,这里的脚本:

public class FöljaBoll : MonoBehaviour
{
   public GameObject player;
   public float yOffset;
   public float zOffset;

   Transform playerPosition;
   Transform cameraPosition;

  // Start is called before the first frame update
  void Start()
  {
    playerPosition = player.GetComponent<Transform>();
    cameraPosition = gameObject.GetComponent<Transform>();
  }

  // Update is called once per frame
  void Update()
  {
    if (playerPosition == null)
    {
        return;
    }

    cameraPosition.position = playerPosition.position + new Vector3(0, +yOffset, -zOffset);
  }

private void FixedUpdate()
{
    if (player == null)
    {
       return;
    }
    else
    {
        float speed = player.GetComponent<Rigidbody>().velocity.z + 6;
        float targetFOV = (float)Math.Log(speed, 1.1) + 34;
        GetComponent<Camera>().fieldOfView = Mathf.Lerp(GetComponent<Camera>().fieldOfView, targetFOV, (float)0.1);
    }
  }
}

因此,它所做的是它设置FOV的基础上,球员的速度通过对数函数,以便它不会失控,在高速,但出于某种原因,这一部分(我注解出来,无法重现的错误):
GetComponent<Camera>().fieldOfView = Mathf.Lerp(GetComponent<Camera>().fieldOfView, targetFOV, (float)0.1);
触发错误信息。如果有人能帮我解决这个问题,那就太棒了,提前感谢!:)

rkttyhzu

rkttyhzu1#

我自己解决了这个问题,将连接到斜坡和球体的物理材质的反弹设置为0。https://answers.unity.com/questions/9985/limiting-rigidbody-velocity.html说弹跳与高速结合会引起问题,这似乎已经是问题所在。

相关问题