code VR

Unity×VR(106)

スポンサーリンク

//tips
嶋津様打ち合わせ

//キャラクターUI整備

DeerのキャラクターUIの実装を行う。skinnedmeshrendereの透過方法は確認中のため保留して次の機能を実装する。

縮小する機能を実装するためShrinkingfuncスクリプトを参考にして試していく。縮小と拡大を連続で起こすように一部変更。

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

public class Shrinkingfunc : MonoBehaviour
{

public void OnStretch()
{
StartCoroutine("StretchEffect");

}

public void OnShrink()
{
StartCoroutine("ShrinkEffect");

}

IEnumerator ShrinkEffect()
{
// 繰り返し回数
int loopcount = 10;

// 更新間隔
float waitsecond = 0.5f;

// スケール設定
// オフセット値
float offsetScale = 1.0f / loopcount;
// 更新値
float updateScale = 1;

// オブジェクトの有効化
transform.localScale = new Vector3(1.0f, 1.0f, 1.0f);

for (int loop = 1; loop < loopcount; loop++)
{
// スケール更新
updateScale = updateScale - offsetScale;
transform.localScale = new Vector3(updateScale, updateScale, updateScale);
yield return new WaitForSeconds(waitsecond);

if (loop == 9)
{
OnStretch();
}

}
// 最終スケール
transform.localScale = new Vector3(offsetScale, offsetScale, offsetScale);

}

IEnumerator StretchEffect()
{
// 繰り返し回数
int loopcount = 10;

// 更新間隔
float waitsecond = 0.5f;

// スケール設定
// オフセット値
float offsetScale = 1.0f / loopcount;
// 更新値
float updateScale = 0;

// オブジェクトの有効化
transform.localScale = new Vector3(0.0f, 0.0f, 0.0f);

for (int loop = 0; loop < loopcount; loop++)
{
// スケール更新
updateScale = updateScale + offsetScale;
transform.localScale = new Vector3(updateScale, updateScale, updateScale);
yield return new WaitForSeconds(waitsecond);
}
// 最終スケール
transform.localScale = new Vector3(1.0f, 1.0f, 1.0f);
}

}

これで縮小拡大の実装ができた。4つ目のスキルはダメージ2倍にしたのでbool切り替え処理で対応。人狼側のUI整備に移行する。ミニマップ機能を追加し、一方で自身はレーダーに映らなくするスキルを作る。

Layerにstealthレイヤーを作り、deerオブジェクトの子要素として埋め込んだminimap用の球のlayerの一定時間minimapからstealthに変更できるようにする。

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

public class ChangeLayer : MonoBehaviour
{
public void Layerchange()
{
this.gameObject.layer = LayerMask.NameToLayer("Stealth");
StartCoroutine("BackLayer");
}

private IEnumerator BackLayer()
{
yield return new WaitForSeconds(2);
this.gameObject.layer = LayerMask.NameToLayer("MiniMap");
}
}

これで実装できた。後は各キャラ共通のultimateダメージを追加。

//skinnedmeshrendereの透過方法

deermashのrenderingmodeを変更する前にspecularのsourceをspecular alphaからAlbedo alphaにすることでrenderingmodeをshadeなどに変更した後も透過せず、SkinnedMeshRenderer>().material.color;で調整できるようになった。

このAlbedo alphaの知識があるかないかでかなり違う。

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

public class MeshTransparentEffect : MonoBehaviour
{
Color color;

void Start()
{
color = GetComponent<SkinnedMeshRenderer>().material.color;
OnTransparent();
}

public void OnTransparent()
{
StartCoroutine("TransparentEffectOn");
}

IEnumerator TransparentEffectOn()
{
// 繰り返し回数
int loopcount = 10;

float waitsecond = 0.5f;

float offsetcolor = 1.0f / loopcount;
// 更新値
float updatecolor = 1;

// オブジェクトの有効化
color.a = 1;

for (int loop = 1; loop < loopcount; loop++)
{
// スケール更新
updatecolor = updatecolor - offsetcolor;
color.a = updatecolor;
GetComponent<SkinnedMeshRenderer>().material.color = color;

yield return new WaitForSeconds(waitsecond);
}
// 最終
yield return new WaitForSeconds(1);
color.a = 1;
GetComponent<SkinnedMeshRenderer>().material.color = color;
}
}

人気の記事

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.