プレイするゲームがないなら、自分で作ればいいじゃない!
ということで初心者が Unity を使って「ゲームを作る」ゲームをやっていきます!
今回は「弾と敵の当たりを判定して消すまで」の記事です
コンポーネントの追加
これまでに作成したプレイヤーに追加します
追加するコンポーネントは2つ!
Rigidbody 2D
リジッドボディは判定するオブジェクトのどちらかにアタッチされている必要がある
リジッドボディの設定
2Dシューティングなので「ボディタイプをキネマティック」に変更する
これで物理演算の影響を受けなくなります
Collider 2D
画像に合うコライダーを選択する
コライダーの設定
「トリガーにする」にチェックを入れます
当たりの範囲を変更する
弾にも追加する
同じようにコンポーネントを追加すればいいのですが
弾はプレハブなので「コライダーの編集」がやりづらい…
そんなときは弾をシーンビューに表示させて、それで編集します
しかしその編集はアセットにあるプレハブには適用されていません
アセットのプレハブに適用させる
プレハブオブジェクトの編集をプレハブに適用するには
「オーバーライド」をしなければなりません
これでアセットにあるプレハブにもコライダー設定が適用されました!
タグの追加と設定
どのオブジェクトかを判定するシステムとして
「タグ」というものを使用します
敵を作成
画像を用意します
敵にも同じようにコンポーネントを追加して、コライダーを編集します
敵用のC#スクリプトも追加しましょう
スクリプト
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyController : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
void OnTriggerEnter2D(Collider2D other)
{
// 当たったのがプレイヤーの弾
if (other.gameObject.CompareTag("player_bullet"))
{
// 自身を消す
Destroy(gameObject);
// 弾も消す
Destroy(other.gameObject);
}
}
}
void OnTriggerEnter2D(Collider2D other)
コライダーが当たったときに処理される関数
other は当たったコライダーの情報が入っている
other.gameObject.CompareTag(“player_bullet”)
player_bullet の部分は「タグ名」を指定する
オブジェクトが指定したタグの場合は true になる
サンプル動画
さいごに
弾と敵の判定だけ作成しましたが、同じようにタグを追加してスクリプトを編集すると
プレイヤーと敵の判定も作成できました!
コメント