橋広コウさんも、同じく流星咲斗さんの動画シリーズで勉強して作品を公開されたので、早速遊んでみた。
その作品の中で、敵レーダーがあったのが、とても便利で感銘を受けたので、自分でも作ってみる事にしました。
まず、レーダー用のカメラを作成し、Player Objectの子供に設定する。
レーダー用のカメラは、ある程度の高度のプレイヤーの真上から、プレイヤーを撮影するようにする。
次に、その映像を同時にゲーム画面に表示させるのだが、これは調べてみると、案外簡単に設定できた。
ただ、これだと、単に上空からの映像になってしまって分かりにくかったので、レーダーに映るObject(Pos Marker)を作成して、レーダー用カメラではPos Markerと地上のみを写すように設定する事にした。
それで、このPos MarkerをPlayerとEnemyの子供に設定するのだが、PlayerとEnemyとでは、localScaleが違っているため、Pos Markerの高さと大きさがそれぞれ異なってしまう。
なので、Pos Marker用のスクリプトを作って、高さとScaleを制御する事にした。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SetMarker : MonoBehaviour { void Start() { Transform mytransform=transform; //高さを強制的に160にしている。 transform.position=new Vector3(mytransform.position.x,160,mytransform.position.z); var localScale = this.transform.localScale; var parentLossyScale = this.transform.parent.lossyScale; //親ObjectのScaleの影響を排除。 this.transform.localScale = new Vector3( localScale.x / parentLossyScale.x, localScale.y / parentLossyScale.y, localScale.z / parentLossyScale.z); } }
方法については、@masaminさんの記事を参考にしている。
qiita.com
Pos MarkerのObjectはSphereで作成している。
ただSphereを作成しただけではレーダー画面で見にくいので、発光するように設定した。
レーダー用のカメラの設定はこんな感じだ。
結果はこんな感じになる。
youtu.be
しかし、そろそろこの習作もコンセプトを考えて仕上げてしまわないとな〜😅