我在Unity场景中有两个位置,我想让一个球体游戏对象在它们之间移动。使用move towards命令很容易实现,但是我想要的是球在离开一个位置时加速,然后在接近下一个位置时以控制曲线减速。我需要让它在两个位置之间振荡,就像滚动的球一样。
我被告知可以使用正弦波来实现这一点,但我不确定如何做。是否有简单的方法可以实现?
我被告知可以使用正弦波来实现这一点,但我不确定如何做。是否有简单的方法可以实现?
解决问题的方法有很多种,不仅仅是使用正弦函数。
下面是一个示例:
public float frequency = 1.0f; // in Hz
public Vector3 positionA;
public Vector3 positionB;
private float elapsedTime = 0.0f;
public void Update()
{
elapsedTime += Time.deltaTime;
float cosineValue = Mathf.Cos(2.0f * Mathf.PI * frequency * elapsedTime);
transform.position = positionA + (positionB - positionA) * 0.5f * (1 - cosineValue);
}
void FixedUpdate () {
float t = Time.time - startTime;
rb.velocity = direction * speed + orthogonal * amplitude * Mathf.Sin (frequency * t);
}