所以在我的游戏中,你是一个球体滚下斜坡,但如果你走得太快,撞到一个突出的游戏冻结,主机得到垃圾邮件的标题中的第一个错误,其次是第二个。我设法找到了什么代码行导致这个问题,这里的脚本:
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);
触发错误信息。如果有人能帮我解决这个问题,那就太棒了,提前感谢!:)
1条答案
按热度按时间rkttyhzu1#
我自己解决了这个问题,将连接到斜坡和球体的物理材质的反弹设置为0。https://answers.unity.com/questions/9985/limiting-rigidbody-velocity.html说弹跳与高速结合会引起问题,这似乎已经是问题所在。