今回やること
Unity上でオブジェクトを動かしたりする時にやっておくべきことをご紹介します。
例えば
1秒間にX座標60移動させるとします。
Move.cs
{
transform.position=new Vector3(0,0,0);
void Update()
{
transform.position += new Vector3(1,0,0);
}
}
これを60fpsの状態で起動すると毎秒60移動していることになります、ですがこれが30fpsになると毎秒30しか進まなくてなってしまいます。
なら60fpsでいいじゃんって話なのですが必ず60fps出る保証もありません。ではどんなfpsでも毎秒進む距離が変化しない状態にするにはどうすればいいのかというと。
Time.deltaTimeを使う
このTime.deltaTimeってなにかというと「1 / 現在出ているfps」が戻り値として取得できます。
つまり60fps時なら「約0.0166」30fpsなら「約0.0333」を返してくれます。
それを元にコードを書くと。
Move.cs
{
transform.position=new Vector3(0,0,0);
void Update()
{
transform.position += new Vector3(60*Time.deltaTime,0,0);
}
}
これでどんなfpsが出ていても1秒後には限りなく60に近い数値になります。
fpsの数値によって動く速さが変わるのはあまりよろしくないと思うのでこのようにどんなfpsになっても1秒間に動く距離が変わらないようにしてあげると良いと思います。