code VR

Unity×VR(100)

スポンサーリンク

//tips

//キャラクターのアクションUIの設定

前回キャラクターの攻撃モーションを実装したが、本日確認してみたところ攻撃判定が2回生じるバグは解消されていた。おそらくどこかのスクリプトのセーブ漏れが更新されて直ったのではないかと考える。

Photonの移動スクリプトにアタッチする前にテストシーンで扱いやすいスクリプトに処理を実装し、完成したものをPenvPlaymove4スクリプトに移す流れで進める。

PcharaUIBlueのhuman/wolfのキャラクター操作UIパネルの模型を作成し、完了した段階でSampleScene3に移す。

ベースとなるキャラクター操作UIを作成。丸型のimageをタップドラッグする流れで操作できるようにする。

まずは下記を一つ目のスキルとして追加し、タップしたらミニマップを使用できるようにする。

public void MiniMapOpen()
{
Minimap.SetActive(true);
}

minimapCameraのprojectionはorthographicとしsizeは20まで増やすことで2次元表示である程度の範囲まで表示できる。playerの子要素にした赤sphereのLayerにminmaplayerを付与し、minimapの表示をシンプルな形に変える。

次のスキルではプレイヤーの移動速度を増加させる。rb.position = transform.position + transform.forward * 10.0f * Time.deltaTime;に変数を一つ追加し、そちらで速さを操作できるようにする。

rb.position = transform.position + transform.forward * 10.0f * Time.deltaTime * rabbitspeedup;

として、

public void RabbitspeedIp()
{
rabbitspeedup = 1.1f;
}

をボタン操作で追加する。

時間制限付きの速度変化は下記のようにコルーチンを使用して実装した。

public void RabbitDash()
{
StartCoroutine("RabbitDashon");
}

IEnumerator RabbitDashon()
{
rabbitspeedup = 3.0f;
yield return new WaitForSeconds(2);
rabbitspeedup = 1;
}

最後に攻撃にslow効果を付与する。RabbitAtackでOnTriggerEnterが発動した際に相手の移動スクリプトが記載されたコンポーネントを取れるのでそこで相手側にアタッチされている変数rabbitspeedupにアクセスし、0.8などに設定変更させれば良い。

Rabbitの右足についているRabbitAtackManagerにスクリプトを追加する。ボタンクリックをflagの切り替えに使い、動作後にはオフに戻す仕組みにした。

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

public class RabbitAtackManager : MonoBehaviour
{
public float powerEnemy = 1; //攻撃力

HPScriptE hPScriptE;

Decoy decoy;

[SerializeField]
GameObject ParentObject;

bool rabitslowflag=false;

EnvPlaymove4 envPlaymove4;

private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player"&& other.gameObject != ParentObject)
{
//hPScriptE = other.gameObject.GetComponent<HPScriptE>();

decoy = other.gameObject.GetComponent<Decoy>();

decoy.hp -= powerEnemy;
Debug.Log("aaa");

if (rabitslowflag)
{
envPlaymove4 = other.gameObject.GetComponent<EnvPlaymove4>();
StartCoroutine("Rabbitslowfunc");
Debug.Log("rabitslowflagtrue");
}

//hPScriptE.hp -= powerEnemy;

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

public void Rabbitslow()
{
rabitslowflag = true;
}

IEnumerator Rabbitslowfunc()
{
envPlaymove4.rabbitspeedup = 0.8f;
yield return new WaitForSeconds(2);
envPlaymove4.rabbitspeedup = 1;
rabitslowflag = false;
Debug.Log("rabitslowflagfalse");
}
}

これでPcharaUIRabbithumanのスキル関係は完了。PcharaUIRabbithumanの実装にうつる。wolfの方は任意で移動速度を人間より早く移動させたり、攻撃ダメージを人間用のものと人狼用のもので任意に切り替えさせられるようにするので、その分のボタンと変数が必要になる。

rb.position = transform.position + transform.forward * 10.0f * Time.deltaTime * rabbitspeedup;

にwolfs speed変数の追加。

UIにはwolfmodeボタンを追加し、そのボタンを押すことで速さが1.2倍、攻撃力が2倍となるように設定する。また、オンオフの切り替えが行えるようにしておく。またオンの場合のみwolfmodeの表示が出るようにしておく。

RabbitAtackスクリプトを下記のように修正。

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

public class RabbitAtackManager : MonoBehaviour
{
public float powerEnemy = 1; //攻撃力

HPScriptE hPScriptE;

Decoy decoy;

[SerializeField]
GameObject ParentObject;

bool rabitslowflag=false;

EnvPlaymove4 envPlaymove4;

bool wolfmode = false;

[SerializeField]
GameObject wolfimage;

private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player"&& other.gameObject != ParentObject)
{
//hPScriptE = other.gameObject.GetComponent<HPScriptE>();

decoy = other.gameObject.GetComponent<Decoy>();

if (wolfmode)
{
decoy.hp -= powerEnemy*2;
Debug.Log("wolfmode");
}
else
{
decoy.hp -= powerEnemy;
Debug.Log("human");
}

 

if (rabitslowflag)
{
envPlaymove4 = other.gameObject.GetComponent<EnvPlaymove4>();
StartCoroutine("Rabbitslowfunc");
Debug.Log("rabitslowflagtrue");
}

//hPScriptE.hp -= powerEnemy;

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

public void Rabbitslow()
{
rabitslowflag = true;
}

IEnumerator Rabbitslowfunc()
{
envPlaymove4.rabbitspeedup = 0.8f;
yield return new WaitForSeconds(2);
envPlaymove4.rabbitspeedup = 1;
rabitslowflag = false;
Debug.Log("rabitslowflagfalse");
}

public void Wolfmodeonoff()
{
wolfmode = !wolfmode;
Debug.Log("switchmode");

if (wolfmode)
{
wolfimage.SetActive(true);
}
else
{
wolfimage.SetActive(false);
}
}

}

無事機能した。

人気の記事

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.