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

皆さん、ついに、エアラインでも、サブスクリプションが始まったのはご存じですか? まだ実験段階ですが、ANAが、定額全国住み放題サービスを提供する「ADDress」と組んで、国内線を4回まで定額利用可能 ...

2

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

3

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

4

ついに、noteの月間アクティブユーザー数が4400万人(2020年3月時点)に到達しました。 そもそも、「note」とは、クリエイターが、文章やマンガ、写真、音声を投稿することができ、ユーザーはその ...

5

ボードゲームカフェが1日2回転で儲かるという記事をみつけたので興味を持ち、調べてみました。 まずは、需要がどれくらいあるのか、市場のようすからみていきましょう。 世界最大のボードゲーム市場はドイツで、 ...

-code, VR
-,

Copyright© BUSINESS HUNTER , 2023 All Rights Reserved Powered by AFFINGER5.