Unityで「簡単なモグラ叩きゲーム」を作成する、Part2です。
はじめに
Part1は下記です。
今回やること
Part1ではモグラが動くのをアニメーションで作成しました。Part2の今回は、モグラをマウスクリックで叩けるようにしていきます。
作成開始
まずはPart1で作成したアニメーションをスクリプトに組み込んでいきます。
Assetsフォルダ内にScriptsフォルダを作成します。

Scriptsフォルダ内に新規でスクリプトを作成して名前を「mogura」にします。

スクリプト内容
スクリプトの中身は下記に変更します。Startでトリガーをセットして、もぐらが動くアニメーションを起動しています。また、OnMouseDownで画像を変更しています。
using UnityEngine;
public class mogura : MonoBehaviour
{
[SerializeField] private Sprite moguraDamage;
private SpriteRenderer spriteRenderer;
private Animator animator;
private void Awake()
{
spriteRenderer = GetComponent<SpriteRenderer>();
animator = GetComponent<Animator>();
}
private void Start()
{
animator.SetTrigger("Show");
}
private void OnMouseDown()
{
spriteRenderer.sprite = moguraDamage;
}
}
スクリプトをmoguraに追加して、パラメータに叩かれたモグラの画像をセットします。また、OnMouseDownが動くようにAddComponentから「CircleCollider2D」を追加します。

コライダーの範囲をモグラの頭部分にします。

スクリプトを変更
現状だと、モグラが穴の中にいても叩けてしまうのと、画像が初期に戻らないのでスクリプトを下記に修正します。
using UnityEngine;
public class mogura : MonoBehaviour
{
[SerializeField] private Sprite moguraNormal;
[SerializeField] private Sprite moguraDamage;
private SpriteRenderer spriteRenderer;
private Animator animator;
private CircleCollider2D collider;
private void Awake()
{
spriteRenderer = GetComponent<SpriteRenderer>();
animator = GetComponent<Animator>();
collider = GetComponent<CircleCollider2D>();
}
private void Start()
{
animator.SetTrigger("Show");
}
private void OnMouseDown()
{
spriteRenderer.sprite = moguraDamage;
}
public void ColliderOn()
{
collider.enabled = true;
}
public void ColliderOff()
{
collider.enabled = false;
}
public void spriteReset()
{
spriteRenderer.sprite = moguraNormal;
}
}
スクリプトのパラメータに画像をセットして、CircleCollider2Dのチェックを外します。

アニメーションにイベントを追加
アニメーションを開いてEventを追加します。Eventはその位置にきたら作動するものです。

スクリプトに追加した「ColliderOn」と「ColliderOff」、「spriteReset(画像のリセット)」をEventで適切な位置に設定します。

実行して「モグラが穴から出たときにマウスでクリックしたら画像が変わる」となればOKです。

モグラのプレハブ化
Assetsフォルダ内にPrefabsフォルダを作成して、moguraをドラッグアンドドロップしてプレハブ化しておきます。

