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

皆さん、ついに、エアラインでも、サブスクリプションが始まったのはご存じですか? まだ実験段階ですが、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.