1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめに

前回オブジェクトを矢印キーを使って動かすところまでできました。
今回は敵オブジェクトを配置して、プレイヤーと衝突したときの当たり判定を追加していきます。

前回の記事

敵のオブジェクトとスクリプトを追加

マ◯オでいうク◯ボーを追加します。
ここでは🦐を敵として追加します。
image.png

敵のスクリプトも追加します。
名前は「EnemyController」です。

※以前作ったゲームは🦀が敵だったため、オブジェクト名がややこしいことになったので、オブジェクト名を「kani_enemy」から「Kani」に変更しました。
image.png

当たり判定のスクリプト

敵オブジェクトに以下のスクリプトをかいてみます。

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…ベクトルの長さを返す変数

下の図の矢印の距離がベクトル
image.png

今回はひとまず、🦀が🦐に当たると🦐が消えます。
🦐の移動距離を1にしていたのですが、すごい速さで駆け抜けていったので0.1にしました。

スクリプトをアタッチしました。
動かしてみます。
image.png

突進してきて消えました。
image.png

もうちょっと考えて移動距離とかを決めないとだめですね。

さいごに

なんとか当たり判定をつけるところまでわりとスムーズにできました!
javascriptでかいたときと比較して、楽にゲームを作れている気がします。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?