试图以统一性显示游戏对象的速度,数字反弹



好吧,我正在开发一款游戏,在该游戏中,您可以在避免小行星的同时降落火箭船...很简单。我有两个UI文本元素,这些元素旨在显示当前的垂直和水平速度。我四处搜寻,并在统一功能方面空着,以获得2D刚性体的当前速度,所以我想到了:

void Update () {
    shipVelocity = Mathf.Abs((lastPosition.y - spaceShip.transform.position.y) / Time.deltaTime);
    shipAngularVelocity = Mathf.Abs((lastPosition.x - spaceShip.transform.position.x) / Time.deltaTime);
    uiText = "Vertical Velocity: " + shipVelocity;
    currentVelocityText.text = uiText;
    uiText = "Horizontal Velocity: " + shipAngularVelocity;
    currentAngularVelocityText.text = uiText;
    lastPosition = spaceShip.transform.position;
}

基本上,它只能执行您的标准速度= delta位置/delta时间,但有问题。数字在整个地方弹跳,船降落并完全静止后,数字从0-1弹跳。当它飞行的数字从我认为的准确速度转变为0和后背时,数字迅速变化 - 如此之快,它基本上看起来像是在闪烁。

可能只是称呼它太快吗?IE。帧速率太高?如果是这样,我该如何减速?

thnx!

如果要更新刚体,则将更新逻辑放入" fixedupdate()"中很重要。此版本的更新以设定的速率调用(默认为50x/sec),因此应用于更新物理逻辑。链接:https://docs.unity3d.com/scriptreference/monobehaviour.fixedupdate.html

这在游戏中很常见,因为它将帧率(绘制/sec)与更新逻辑(更新/sec)分开,这意味着帧量滴的帧,游戏的基础物理学没有更改。

最新更新