FixedUpdateを使った矢印キー移動のスクリプト(ダッシュ機能つき)
どうも!すあまですsuama.icon!
今回は、FixedUpdateを使った矢印キー移動について書いていきます!
Updateメソッドとは、毎フレーム呼び出される処理です。
一方でFixedUpdateは、一定時間ごとに呼び出される処理です。厳密には、0.02秒に一度(一秒に50回)呼び出されます。
一見変わらない2つのUpdateですが、使い分けたほうがいいんです。
Updateは使う機種によってフレームが変わってしまいます。プレイヤーを動かすとき、機種ごとに早さが変わってしまったらいやですよね?プレイヤーを移動させるのは、FixedUpdateを使ったほうがいいです。
しかし、ボタン操作はUpdateにする必要があります。つまり、どちらも使うことになります。
code:C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Move : MonoBehaviour
{
//float型変数「PlayerPositionX」と「PlayerPositionY」を宣言する
float PlayerPositionX = 0.0f;
float PlayerPositionY = 0.0f;
//float型変数「speed」を宣言する
float speed = 0.05f;
void Update()
{
//Vector2変数「position」に、自身のオブジェクトの位置情報を割り当てる
Vector2 position = transform.position;
//もし左矢印キーが押されたら
if (Input.GetKey("left"))
{
//positionのx座標からspeedずつ引く
position.x -= speed;
}
//もし右矢印キーが押されたら
if (Input.GetKey("right"))
{
//positionのx座標にspeedずつ足す
position.x += speed;
}
//もし上矢印キーが押されたら
if (Input.GetKey("up"))
{
//positionのy座標にspeedずつ足す
position.y += speed;
}
//もし下矢印キーが押されたら
if (Input.GetKey("down"))
{
//positionのy座標からspeedずつ引く
position.y -= speed;
}
//もしスペースキーが押されたら
if (Input.GetKey(KeyCode.Space))
{
//speedを0.07に変える
speed = 0.07f;
}
//もしスペースキーが離されたら
if (Input.GetKeyUp(KeyCode.Space))
{
//speedを0.05に直す
speed = 0.05f;
}
//PlayerPositionXに自身のオブジェクトのx座標を割り当てる
PlayerPositionX = position.x;
//PlayerPositionXに自身のオブジェクトのx座標を割り当てる
PlayerPositionY = position.y;
}
private void FixedUpdate()
{
//新しくVector2変数「PlayerMove」の
//x座標にPlayerPositionX,y座標にPlayerPositonYを割り当て
Vector2 PlayerMove = new Vector2(PlayerPositionX,PlayerPositionY);
//自身のオブジェクトの位置をPlayerMoveの位置にする
transform.position = PlayerMove;
}
}
これで、ボタンの入力はUpdateで受け取り、プレイヤーが動くプログラムはFixedUpdateで実行されるようになります。Updateのボタン操作によって変数を動かし、その変数をFixedUpdateによってプレイヤーの座標に割り当てます。
ダッシュを実装するには、speedの変数を変えます。speedはその名前の通りスピードを表しているので、数値を高くするだけでダッシュを実装することができます。このコードの場合、スペースキーが押されている間だけ、スピードが速くなるようになっています。ダッシュ機能のプログラムは外してもまったく問題ありません。
以上がUpdateとFixedUpdateを使ったプレイヤーの移動方法です。
最後まで読んでくださり、ありがとうございました!
もしおかしいところなどあれば、気軽にTwitterでコメントしてください!