はじめに
前回オブジェクトを矢印キーを使って動かすところまでできました。
今回は敵オブジェクトを配置して、プレイヤーと衝突したときの当たり判定を追加していきます。
前回の記事
敵のオブジェクトとスクリプトを追加
マ◯オでいうク◯ボーを追加します。
ここでは🦐を敵として追加します。
敵のスクリプトも追加します。
名前は「EnemyController」です。
※以前作ったゲームは🦀が敵だったため、オブジェクト名がややこしいことになったので、オブジェクト名を「kani_enemy」から「Kani」に変更しました。
当たり判定のスクリプト
敵オブジェクトに以下のスクリプトをかいてみます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyController: MonoBehaviour
{
GameObject player;
void Start()
{
// アクティブなオブジェクトを探す
this.player = GameObject.Find("Kani");
}
void Update()
{
// 左に0.1づつ進むことで🦀に近づいていく
transform.Translate((float)-0.1, 0, 0);
// 当たり判定
Vector2 p1 = transform.position; // 🦐中心座標
Vector2 p2 = this.player.transform.position; // 🦀中心座標
float d = (p1 - p2).magnitude;
float r1 = 0.5f; // 🦐の半径
float r2 = 1.0f; // 🦀の半径
if (d < r1 + r2)
{
Destroy(gameObject);
}
}
}
magnitude
…ベクトルの長さを返す変数
今回はひとまず、🦀が🦐に当たると🦐が消えます。
🦐の移動距離を1にしていたのですが、すごい速さで駆け抜けていったので0.1にしました。
もうちょっと考えて移動距離とかを決めないとだめですね。
さいごに
なんとか当たり判定をつけるところまでわりとスムーズにできました!
javascriptでかいたときと比較して、楽にゲームを作れている気がします。