如何使用Unity 3D振动对象?

问题描述 投票:1回答:2

我正在尝试用Unity模拟一场非常简单的地震。主要思想是向后/向前移动平台。我尝试了下面的代码,但是没有用。我需要类似的东西。

transform.position += transform.forward*10;
transform.position += transform.forward*-10;
c# unity3d
2个回答
0
投票

您将希望通过多个更新来执行此操作,以便可以将每个差异呈现到屏幕上,我建议这样做是这样的>]

private Vector3 initialPosition;
Vector3 directionOfShake = transform.forward;
public float amplitude; // the amount it moves
public float frequency; // the period of the earthquake

void Start(){
    initialPosition; = transform.position // store this to avoid floating point error drift
}



void FixedUpdate(){
     transform.position = initialPosition + directionOfShake*Mathf.Sin(frequency * Time.FixedDeltaTime)*amplitude;
}

这使您可以从编辑器更改地震。

或者,如果您想要更锐利的东西

void FixedUpdate(){
         transform.position = initialPosition + directionOfShake*(-amplitude + Mathf.PingPong(frequency * Time.FixedDeltaTime, 2.f*amplitude);
    }
    

1
投票

如果要创建地震,最好的方法是摇动相机而不是摇动平台。

© www.soinside.com 2019 - 2024. All rights reserved.