【Unity2D】岩を壊す仕組み作り初期エリアを完成させる
ハンマー取得イベントが完了したので、今度はハンマーを使った仕組み作りをします。
最初のエリアの仕掛けである岩を壊して次へ進むというチュートリアルを実装するために、
武器の判定が衝突したら岩を消滅させてみましょう。
壊れるアニメーションはいったん無視でいきます。
壊せる岩の配置
画像をまだ用意していないので、四角のグラフィックを代用しましょう。
この岩は1個作ったらプレハブ化しておけば再利用できそうです。
ハンマーがあたれば消えるような仕組みを作りたいので、
汎用性のあるオブジェクト用のスクリプトを作ります。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class _ObjectStateGeneral : MonoBehaviour
{
void Start()
{
}
private void OnTriggerEnter2D(Collider2D other)
{
if (other.name == "hammer")
{
this.GetComponent<SpriteRenderer>().color = new Color(0, 0, 0, 0);
transform.position = Vector3.zero;
}
}
}
当たった時にスクリプトを設定したオブジェクトに当たったオブジェクトの名前(ここではハンマーの名前)を条件にして
アルファ値を0にして移動させるかすり抜けられるようにしてください。
これで完了です。
あとはハンマーを当てたら消えてくれるのですが、
現状ハンマーの当たり判定が常に頭の上に出たままになっていてそれに当たったら消えてしまいます(笑)
ついでなので壊せるプレハブ化もしてしまいましょう。
壊せるブロックのプレハブ化
プレハブ化は簡単で、ヒエラルキーにあるデータをディレクトリにD&Dで移すと作成できます。
プレハブ化したものはD&DでSceneに配置することができます。
基本的なオブジェクトは親を編集すれば子であるプレハブも変化します。
オブジェクトとしては別オブジェクトとしての認識なので、
要は親の皮をかぶった別個体といった感じですね。
シューティングの弾なんかは基本この仕組みを使って作っていきます。
プレハブについて詳しく知りたい方はプレハブの使い方で調べてみてください。
配置するときは16で割り切れる座標においてください。
初期エリアを完成させる
これで初期エリアに必要な要素はそろいました。
あとはプレハブ化した壊せるブロックを配置して次のエリアにいけるようにしましょう。
結果を見せておくと、こんな感じになりました。
右上にハンマーイベント。
左上にハンマーで岩を壊してとれる宝箱イベント。
真ん中にハンマーで先に進める通路。
まずプレイヤーは先に進めないし目の前にある宝箱も取れない状況。
そんな状況を打破するためにあからさまに置かれたハンマーを取りに行き、
岩を壊して先に進めるようになります。
宝箱を無視してもいずれ先に進めず必要になって戻ってくる感じですね。
ドット絵をまだ用意してないのでとりあえず色を変えて差別化してます。
次回は押す引くによる仕掛けを作ってみましょう。