code VR

Unity×VR(103)

スポンサーリンク

//tips

//キャラクターUI整備継続

Foxキャラクターにテレポート機能を実装する。以前作成したwarpControllerスクリプトをFoxにアタッチ。さらに子要素にワープポータルとなるオブジェクトを作成し、setwarpスクリプトを付与する。setwarpスクリプトの方のみcube_pos = GetComponent<Transform>().position;をupdateメソッド以下にも追加したので下記に記載する。

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

public class Setwarp : MonoBehaviour
{
public Vector3 cube_pos;

[SerializeField]
warpController warpcontroller;

[SerializeField]
GameObject warpplayer;

void Start()
{
cube_pos = GetComponent<Transform>().position;
}

void FixedUpdate()
{
cube_pos = GetComponent<Transform>().position;

if (warpcontroller.onwarp == true)
{
if (this.transform.parent != null)
{
this.transform.parent = null;

}
}
}
}

これでワープ機能は実装できた。次に霧を発生させる機能を作成する。UIのpanelに色の濃淡を時間経過でつけることで疑似的な霧や暗闇状態を作成することができるが、Unityの既存の設定の中でfogを操作できるものがあることを知ったのでそちらの使い勝手を調べていく。Unityのwindowからrendering/lighting settingsに移りfogのチェックボックスをオンにし、数値を調整。

これで地平線にモヤがかかったようになった。さらにここからカメラで写した映像にエフェクトをつける処理PostProcessingという機能を使用し、モヤの領域を広げていく。Window/Packege Manager/Post Processingからインストール。

インストールするとカメラのコンポーネント検索にPost Process Layerが表示されるようになっているのでそちらをアタッチ。layerにはPostProcessingを設定しておく。空オブジェクトにPost Process Volumeコンポーネントをアタッチし、設定を行った。

対象領域に対して明度などの調整ができるようになった。だが、姿を眩ませるレベルまで明度を上げると目がチカチカするので採用はしないことにした。

Standardassetのdaststorprefabを利用する方法が下記で紹介されていたのでそちらもやってみることにする。

Duststormprefabのインスペクター項目を修正していく。

Duration:15
Prewarm:on
Startlifetime:till 50
Stardsped:0
Startclolor:white
Maxparticles:6000

これによりかなり霧らしいものが生成できた。

これをprefab化してfoxの子要素にする。新たにstormparticleplayスクリプトをアタッチする。ParticlePlayのyield return new WaitForSeconds(3);の秒数を変更しただけの変更にしたところ最初から霧が発生してしまう。Start()のストップアクション前に実行されてしまっているのが問題である。

ここはset activeでの非表示対応にした。新たにfogManagerスクリプトを作成し、foxにアタッチ。子要素のままだとfoxに動きに合わせてfogが動いてしまったので、this.transform.parent = null;で切り離しも行った。

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

public class StormParticlePlay : MonoBehaviour
{
private ParticleSystem particle;

void Start()
{
particle = GetComponent<ParticleSystem>();
//particle.Stop();

particle.Play();
StartCoroutine("PartcleStop");

if (this.transform.parent != null)
{
this.transform.parent = null;
}
}

/*
public void ParticleOn()
{
particle.Play();
StartCoroutine("PartcleStop");
}
*/

private IEnumerator PartcleStop()
{
yield return new WaitForSeconds(1);
particle.Stop();
}
}

次にfoxの攻撃を受けたら、攻撃を受けた相手が暗闇状態になる機能を実装する。photon導入後にコードを修正する必要があるが、ベースとなるスクリプトとUI自体は配置しておく。

攻撃判定を行うFoxAttackManagerをまだ作成していなかったのでFoxの右足にスクリプトをアタッチする。

クリックした場合にtrueになるfoxdarkflagを使用し、otherオブジェクトにGameObject FindWithTagでパネル操作を行わせ用としたがインスタンス参照ではFindWithTag("DarkPanel”);ができないようなので別方法をとる。

envPlaymove4.DarkPanelon();とし、envPlaymove4スクリプトの方にパネルをアタッチし、操作できるようにしておいた。

public void DarkPanelon()
{
Darkpanel.SetActive(true);
}

 

人気の記事

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.