今回から、戦闘シーンの設計に入ります。今回は、歩いた時に敵に遭遇する(ランダムエンカウント)を実現するために、歩いたかどうかをチェックする機能(歩数カウンタ)を追加します。
仕様
機能そのものは非常にシンプルです。
プレイヤーの画面上の移動量をそのまま歩数カウンタに格納します。x
、y
それぞれの移動量をカウントアップします。
※ランダムエンカウント処理は、歩数が整数値で1以上変更になったら行う想定です。
実装
ベースとなるコード
(キャラクターの移動は#2~#4のコードをベースにします)
tomo-mana.hatenablog.com
修正コード
修正部分のみピックアップします。(入力処理はInput Systemです。)
(コード)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerControl2 : MonoBehaviour { // キー入力 private Vector2 input; // 移動 private float speed; private Rigidbody2D rigidBody; /* 中略 */ // 歩数カウンタ [SerializeField] float steps; // 追加 void Start() { speed = 0.1f; rigidBody = GetComponent<Rigidbody2D>(); steps = 0; // 追加 } public void Move(Vector2 v) { input = v; } void FixedUpdate() { // 移動 if (input == Vector2.zero){ return; } else { // 追加 if( input.x != 0 ){ steps += speed; } if( input.y != 0 ){ steps += speed; } } rigidBody.position += input * speed; /* 以下略 */ } }
PlayerのInspector上で歩数が見られるようになりました
次回
次回はランダムエンカウントを実装します。