『Unity5の教科書』「Chapter5 Prefabと当たり判定」 学習記録

序文

「Unity5の教科書」学習5日目。

gigazine.net

割と底辺度には自信あるけど、別に俺攻撃的じゃないよなぁ。
殴り返さないからって雑なレッテル貼りされて困っちゃう。

GitHub

github.com

進捗

  • Chapter5 Prefabと当たり判定

(学習時間:2.5時間)

コード実装部分(一部)

\catescape\assets\arrowcontroller.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ArrowController : MonoBehaviour
{
  GameObject player;

  void Start()
  {
    this.player = GameObject.Find("player");
  }

  void Update()
  {
    // フレームごとに等速で落下させる
    transform.Translate(0, -0.1f, 0);
    // 画面外に出たらオブジェクトを破棄する
    if (transform.position.y < -5.0f)
    {
      Destroy(gameObject);
    }

    // 当たり判定
    Vector2 p1 = transform.position;
    Vector2 p2 = this.player.transform.position;
    Vector2 dir = p1 - p2;
    float d = dir.magnitude;
    // 矢の半径
    float r1 = 0.5f;
    // プレイヤーの半径
    float r2 = 1.0f;

    if (d < r1 + r2)
    {
      // 衝突した場合は矢を消す
      Destroy(gameObject);

      // 監督スクリプトにプレイヤと衝突したことを伝える
      GameObject director = GameObject.Find("GameDirector");
      director.GetComponent<GameDirector>().DecreaseHp();
    }
  }
}
  • その他実装部分

github.com

実行結果

www.youtube.com

感想

今日の課題は上から落ちてくる矢をひたすら避けるゲーム。

Unityの機能(Physics)を使わずにオブジェクトの距離で衝突判定を実装しているのがおもしろいですね。

各章にわたってUnityの機能だけではなく、ゲーム設計の考え方を習得させようという著者の意図が感じられてよいです。
しかもそこそこ見栄えのするゲームまで作れるという、本当にバランスの良い参考書(入門書)だなーと感心しています。

カロリーメイトください。

BGM

さよならバイスタンダー / YUKI

www.youtube.com