『Unity5ゲーム開発レシピ』「Part01 基本編 Chapter06 ユーザーインターフェースを作成する」 学習記録2

Unity5ゲーム開発レシピ ハマるゲーム制作のノウハウ

Unity5ゲーム開発レシピ ハマるゲーム制作のノウハウ

序文

『Unity5ゲーム開発レシピ』9日目。

徹夜明けで少しぼーっとしています。あ、寝たからだ。

GitHub

github.com

進捗

(学習時間:2時間)

コード実装部分

\Chapter1\Assets\Scripts\Marker.cs

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

public class Marker : MonoBehaviour
{
  Image marker;
  public Image markerImage;
  GameObject compass;

  GameObject target;

  void Start()
  {
    // PlayerTargetはプレイヤーの中心
    target = GameObject.Find("PlayerTarget");
    // マーカーをレーダー(コンパス)上に表示する
    compass = GameObject.Find("CompassMask");
    // マーカーイメージを取得して
    marker = Instantiate(markerImage, compass.transform.position, Quaternion.identity) as Image;
    // コンパスのマスクの子要素にする(各エネミーごとに実行される)
    marker.transform.SetParent(compass.transform, false);
  }

  void Update()
  {
    // マーカーをプレイヤーの相対位置に配置する
    Vector3 position = transform.position - target.transform.position;
    marker.transform.localPosition = new Vector3(position.x, position.z, 0);
    /*
    // レーダーの範囲外に出たら表示しない
    if (Vector3.Distance(target.transform.position, transform.position) <= 150)
      marker.enabled = true;
    else
      marker.enabled = false;
    */
  }

  // 敵が消滅したら敵のマーカーも消滅させる
  void OnDestroy()
  {
    Destroy(marker);  
  }
}
  • その他実装部分

github.com

実行結果

www.youtube.com 無駄に長い

感想

やったこと。

  • レーダー上に敵を表示する(離れたり、やっつけたらレーダー上から消える)
  • プレイヤーの体力を表示する

離れた敵を表すマーカーをレーダー上から消すのに

  • 敵とプレイヤーの距離を測って一定距離以上離れたら非表示にする
  • Maskコンポーネント使用してマスクの範囲外に出たら表示させないようにする

という2とおりの実装方法が説明されていた。

前者のほうが直感的であるけれど、後者のやり方で実装できることがプログラミングの実力なのだと思っている。

そのためにはいろんなソースコードに触れるようにするのが一番だ。
勉強勉強。

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

BGM

天然関係 / Sir Oriental Orchestra

www.youtube.com