我正在尝试用Unity模拟一场非常简单的地震。主要思想是向后/向前移动平台。我尝试了下面的代码,但是没有用。我需要类似的东西。
transform.position += transform.forward*10;
transform.position += transform.forward*-10;
您将希望通过多个更新来执行此操作,以便可以将每个差异呈现到屏幕上,我建议这样做是这样的>]
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);
}
如果要创建地震,最好的方法是摇动相机而不是摇动平台。