見出し画像

【Unity C#】キャンディークラッシュ風マッチ3パズルの作り方 #4 タイルの移動制御


このレクチャーでは
タイルの移動制御の処理
を作っていきます

タイルの変数を定義

タイル全体で使う変数を定義していきます

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TileController : MonoBehaviour
{
    // タイルの画像リスト
    [SerializeField] List<Sprite> matchColors;

    // このタイルのカラー
    public int ColorType;

    // 移動速度
    const float MoveSpeed = 3.5f;
    // 目標地点
    Vector2 targetPosition;
    // 目標距離
    float targetDistance;
    // 物理挙動を管理するコンポーネント
    Rigidbody2D rigidbody2d;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

解説

// タイルの画像リスト
[SerializeField] List<Sprite> matchColors;

タイル画像のリストになります
タイル生成時にこのリストの中からランダムで画像を設定します

// このタイルのカラー
public int ColorType;

その画像のタイプをここに保存します、具体的にはランダムで選択した
matchColorsのインデックス番号になります。

// 移動速度
const float MoveSpeed = 3.5f;

こちらは移動や落下時の移動速度になります。
大きいほど早く動きます。

// 目標地点
Vector2 targetPosition;
// 目標距離
float targetDistance;

こちらは今回作っていく移動の関数で使う変数です。
目的位置とそこまでの距離を入れる変数になります 。

// 物理挙動を管理するコンポーネント
Rigidbody2D rigidbody2d;

タイルの制御では、物理挙動のオンオフを何度か使うので
そのコンポーネントを保持しておくための変数になります。


Awake関数を追加

Start関数の上にAwake関数を追加します。

// 生成された時に呼ばれる
void Awake()
{
    // このゲームオブジェクトのRigidbody2Dコンポーネントを取得
    rigidbody2d = GetComponent<Rigidbody2D>();
}

// Start is called before the first frame update
void Start()
{

}

解説

Awake関数は、コンポーネントが有効になったタイミングで一度だけ呼ばれるUnity標準の関数です。

呼ばれるタイミングがStart関数と似ていますが、Start関数はUpdateが実行される直前に一度だけ呼ばれる関数なので、AwakeはStartより早く呼ばれます。

Awakeでコンポーネントを取得して、Startで初期化する
というのはよくやる方法なので、今回ぜひおぼえておいてもらえると良いかなと思います。


移動先をセットする関数

ここから先は

4,075字 / 1画像

この記事が参加している募集

ゲームの作り方

この記事が気に入ったらサポートをしてみませんか?