使游戏对象独立地向上和向下摆动帧速率(2D)



如何使具有随机生成位置的游戏对象上下移动,以使游戏更有活力?

所以Y值应该是这样的:

原创->原始+1f->原始

我想从一个脚本中做到这一点,我希望它与帧速率无关。

谢谢!

抱歉我英语不好。

与帧速率无关听起来很好,但据我所知,FixedUpdate应该用于物理计算,因为它不是常数,所以不能依赖于Time.deltaTime,并且物理计算通常需要精确的delta时间,或者"步骤";用于物理求解器。文件也建议这样做。

因此,我不会选择固定更新,因为我认为所需的运动需要持续、不变和美观。据我所知,如果不涉及物理,场景元素及其移动应该在正常的Update中处理(除了建议在LateUpdate中的相机跟随移动之外(

找到下面的例子,可以用于垂直动画作为一种空闲。如果需要,可以将其更改为FixedUpdate,尽管它在技术上似乎不正确。

public class IdleVerticalMovement: MonoBehaviour
{
float speed = 0.01f;

Update() {
transform.localPosition += new Vector3(0, Mathf.Sin(Time.time) * speed, 0);
}
}

电脑上没有,所以可能会有错误,但可能是这样的:

private bool goingUp = false;
private float speed = 2.0f; // This is the bobing speed
private upperLimit = 1.0f;
private lowerLimit = -1.0f;
private void Update()
{
if(goingUp)
{
transform.position += Vector3.Up * speed * Time.deltaTime;
if(transform.position.y > upperLimit)
{
goingUp = false;
}
}else
{
transform.position += Vector3.Down * speed * Time.deltaTime;
if(transform.position.y < lowerLimit)
{
goingUp = true;
}
}
}

这就是FixedUpdate()处理程序的用途,它以不依赖于帧速率的物理速率被调用。把你的随机计算放进去。

请参阅脚本文档中的MonoBehaviour.FixedUpdate()

编辑:一个合适的";头波波头;是正弦的,不是随机的。

最新更新