ゲーム化!tomo_manaのブログ

ゲーム化!tomo-manaのブログ

Unityでゲームを作る方法について紹介しています

Unity学習#27 歩数カウンタ (Unity 2019.4.4f1)

今回から、戦闘シーンの設計に入ります。今回は、歩いた時に敵に遭遇する(ランダムエンカウント)を実現するために、歩いたかどうかをチェックする機能(歩数カウンタ)を追加します。

仕様

機能そのものは非常にシンプルです。
プレイヤーの画面上の移動量をそのまま歩数カウンタに格納します。xyそれぞれの移動量をカウントアップします。
ランダムエンカウント処理は、歩数が整数値で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上で歩数が見られるようになりました

f:id:tomo_mana:20210217225537p:plain
歩数カウンタ

次回

次回はランダムエンカウントを実装します。