今回はUnityのrigidbody-velocityを利用し、アクション系ゲームに必須ともいえる「キーボード入力」で、キャラクターを動かすのを簡単に実装していきます。まずは左右に動かすのを作成してみます。
はじめに
使用する「Unityのバージョンは2021.3.14f1」で、テンプレートで2Dを選択しています。

今回は特に画像は用意せず、初期状態で利用できる基本の図形を使い実装していきます。
オブジェクトの配置
まずはオブジェクト(地面と動かすプレイヤー)を作成していきます。
フィールド(地面)を作成
まずは地面(フィールド)を作成です。ヒエラルキーメニューで右クリック、「2DObject」→「Sprites」→「Square」を選択します。

名前をGroundに変更、TransformのPositionとScaleを変更して画面の下の方に配置。SpriteRendererのColorも分かりやすくと黒色に変更しておきます。

プレイヤーを作成
次はプレイヤーを作成します。同じように「2DObject」→「Sprites」→「Square」を選択します。ただの白い四角ですが、とりあえずこれを動かすプレイヤーとします。

上がシーンビュー。下がゲームビューです。

ColliderとRigidbodyを設定
次に配置した地面とプレイヤーに「Collider」と「Rigidbody」をアタッチします。
プレイヤーを設定
Playerインスペクターの「Add Component」から「Rigidbody 2D」と「Box Collider 2D」を追加します。

「Rigidbody」は物理エンジンと言われたりします、簡単に言うと質量や重力を与えたり「動かす」のに必要な設定ですね。「Collider」は衝突設定と言われるもので、これを設定しないと全てすり抜けてしまいます。
フィールドを設定
次にフィールドを設定していきます。
プレイヤーの設定をした後に実行すると重力で下に落ちていきますが、地面をすり抜けます。ということでGroundにも「BoxCollider 2D」をアタッチ。

これで一度再生してみて、フィールドに着地すればOK。
スクリプトの作成
次に「左右のキー入力した時にプレイヤーが動く」設定をしていきます。プロジェクトのAssetsフォルダ内で右クリック。「Create」→「C#Script」を選択し、名前をPlayerにします。

スクリプトをダブルクリックで開いて、下記の様に中身を変更します。
using UnityEngine; public class Player : MonoBehaviour { [SerializeField] private float _PlayerSpeed; private Rigidbody2D _rb; private float _inputX; void Awake() { _rb = GetComponent<Rigidbody2D>(); } void Update() { _inputX = Input.GetAxisRaw("Horizontal"); } void FixedUpdate() { _rb.velocity = new Vector2(_inputX * _PlayerSpeed, _rb.velocity.y); } }
Unityではキーボード入力やゲームパット入力をサポートしています。あくまでも一例ですが、こんな感じにスクリプトを作成。
左右キーを入力するとInputXに1か-1が入り、Rigidbody2Dのvelocityでプレイヤーを動かしてます。初期設定の状態だとキーボードの「A」、「D」、「←」、「→」に反応します。
実行
このスクリプトをPlayerにアタッチして、PlayerSpeedに適当な値を入力します。

とりあえずこれで下記の様にキー入力でPlayerが左右に動きます。とりあえず今回は超基本の基本、左右の動きだけ。

補足
スクリプトリファレンスには「非現実的な動作になる可能性があるため、velocityは直接変更しないでください。代わりに AddForce を使用してください」となっています。
AddForceを使用した場合、下記の様な感じのスクリプトになります。実際に動かすと徐々に加速する感じの現実的な動作になります。ゲームによっては「あえて非現実的な動作」というケースもありますね。
using UnityEngine; public class Player : MonoBehaviour { [SerializeField] private float _PlayerSpeed; [SerializeField] private Rigidbody2D _rb; private float InputX; void Update() { InputX = Input.GetAxisRaw("Horizontal"); } private void FixedUpdate() { if (InputX != 0) { _rb.AddForce(new Vector2(InputX * _PlayerSpeed, 0)); } } }