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

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

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.