ゲーム制作勉強中!あこがれだったプログラマーに今からなろう!

昔、あこがれていたプログラマー。今からでも勉強してみようと思い立ち、チャレンジ開始! 勉強メモや、悪戦苦闘な日々の記録です。

3Dアクションゲームを作ろう(6)

unityroom.com

橋広コウさんも、同じく流星咲斗さんの動画シリーズで勉強して作品を公開されたので、早速遊んでみた。
その作品の中で、敵レーダーがあったのが、とても便利で感銘を受けたので、自分でも作ってみる事にしました。

まず、レーダー用のカメラを作成し、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

しかし、そろそろこの習作もコンセプトを考えて仕上げてしまわないとな〜😅