code VR

Unity×VR(73)

スポンサーリンク

//tips

//Gameover遷移の導入

簡単な非同期が実装できたので、Gameoverシーンを作成し、そちらに遷移を行わせる。遷移はプレイヤーにアタッチされているHPScriptから行う。

プレイヤーが活動するシーンにLoadingScriptがアタッチされたからオブジェクトとnowloadingバックグラウンドをcanvas下に配置し、非表示にしておく。

HPScriptの体力が0になったときの処理にloadingScript.NextScene();を追加。

if (hp <= 0)
{
Destroy(gameObject); //ゲームオブジェクトが破壊される
loadingScript.NextScene();

loadingScript.NextScene();をタダで追加してもエラーになるので、きちんとコンポーネントの取得設定も同時に行っている。

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

public class HPScript : MonoBehaviour
{
[SerializeField]
private float maxHp = 3; //体力

[SerializeField]
public float hp;

// HP表示用UI
[SerializeField]
private GameObject HPUI;

// HP表示用スライダー
private Slider hpSlider;

LoadingScript loadingScript;

void Start()
{
hpSlider = HPUI.transform.Find("HPBar").GetComponent<Slider>();
hpSlider.value = 1f;
loadingScript = GameObject.FindWithTag("Loading").GetComponent<LoadingScript>();
}

void Update()
{
hpSlider.value = hp / maxHp;

if (hp <= 0)
{
// HP表示用UIを非表示にする
HideStatusUI();
}
}
//HPUIを非表示にする
public void HideStatusUI()
{
HPUI.SetActive(false);
}

private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Weapon")
{
Debug.Log("hit Player");

Debug.Log("hit Damage");
hp -= other.gameObject.GetComponent<rodManager>().powerEnemy;

//hp -= other.gameObject.GetComponent<rodManager>().powerEnemy;
}
//体力が0以下になった時{}内の処理が行われる
if (hp <= 0)
{
Destroy(gameObject); //ゲームオブジェクトが破壊される
}
}
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "Enemy")
{
Debug.Log("hit Enemy");

Debug.Log("hit Damage");
hp -= 1;
}
//体力が0以下になった時{}内の処理が行われる
if (hp <= 0)
{
Destroy(gameObject); //ゲームオブジェクトが破壊される
loadingScript.NextScene();
}
}
}

Now loading画面は一瞬しか見えないがきちんと非同期遷移ができている。

キャラクターの視点確保の補助のためにミニマップ機能を実装していく。カメラの映像をRender Textureに投影し、UIで表示する方法を考える。

まずは、プロジェクトフォルダにcreateからRender Textureを新規作成する。Render Textureは、リアルタイムでカメラが移す画像を表示させることができる。

これを利用するためにはミニマップ用のカメラが必要になるので、新規作成し、上空から見下ろすポジションに設定した後に、projectionをorthographicに変更。Target Textureに先に作ったRender TextureのMiniMapをアタッチする。

ここまでできたら新しいCanvasを作り、その中に枠画像のimageを入れ、その子要素としてRaw Imageを作る。そのTextureにRender Textureの「MiniMap」を設定するばミニマップの完成。

ミニマップの形を任意の形に編集していく。Rawimageの親にmask用のimageを作成し、maskコンポーネントをアタッチする。そのmaskコンポーネントの画像に切り抜きたい形を指定することでrawimageのデータがその形に切り抜かれる。

常にminimap用のカメラをプレイヤーの上空に飛ばせておけばプレイヤーの周囲のミニマップが表示されることになる。

ただ、表示にオブジェクトがたくさん入ると見づらいので表示するものを厳選していく必要がある。

この表示するか否かをカメラのCulling Mask機能を使用して選り分けていく。

この機能は、レイヤーごとにそのカメラへ表示するかどうかを設定することが可能で、この設定により特定のゲームオブジェクトだけをカメラに映すことができるようになる。

事前にゲームオブジェクトにレイヤーを設定しておき、cameraのインスペクターのculling maskタブをクリックすると、どのレイヤーを映すかを変更することができる。

 

人気の記事

1

コロナによる需要変化 コロナパンデミックの影響で、人々は外に出られなくなり、自宅で過ごす時間が増えました。 この自粛ムードの中、下記のようなビジネスの需要変化が引き起こされています。 【利用者減少】 ...

2

米国レストランの決済時に毎日お世話になっていた「Square」のビジネスモデルについて本日はふれていきたいと思います。 「Square」とは、ネットにつながったモバイル端末と専用のカードリーダーを用意 ...

3

無料でネットショップを開けるアプリとして多くの人に驚きを与えたBASE株式会社が、2019年10月25日東証マザーズに上場しました。2020年2月時点で90万店を超えるショップを抱えるまでに成長してい ...

4

2011年にサービスを開始してから圧倒的な成長率を誇るインテリア通販サイト 【FLYMEe/フライミー】を皆さんご存じでしょうか。 「自分のイメージするインテリア、本当に欲しいインテリアがどこにあるの ...

5

ナイキのSNKRSが、なぜこれほどまでに人気なのか?調べてみました。 きっかけは米国での友達との会話。彼は自分のシューズをみせて、「これ20万円もしたんだぜ。」と語ってくれました。 あまり靴に興味がな ...

-code, VR
-,

Copyright© BUSINESS HACKER , 2021 All Rights Reserved Powered by AFFINGER5.