code VR

Unity×VR(140)

スポンサーリンク

//tips

//キャラクターphoton対応設定

MooseのDroneカメラボタンクリック時のシーンカメラ切り替え方法を考えていく。プレイヤー追従カメラからdroneに設置されているカメラへ表示を切り替える必要がある。

CameraControllerスクリプトとdronecameraスクリプトを確認する。CameraControllerはmooseにアタッチされており、dronecameraスクリプトはmooseの子要素として格納されているdroneにアタッチされている。

シーンにはキャラクターごとに複数のカメラが存在するので、自分を追従するカメラと、それ以外をまずは分ける必要が出てくる。

CameraControllerスクリプトも対応させる必要がある。MooseCameraControllerを新規に作成。

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

public class MooseCameraController : MonoBehaviour
{

private GameObject mainCamera;//メインカメラ格納用

[SerializeField]
GameObject subCamera;

[SerializeField]
GameObject subCamera2;

[SerializeField]
GameObject drone;

[SerializeField]
GameObject drone2;

public bool onsubc = false;
public bool onsubc2 = false;

void Start()
{
mainCamera = GameObject.FindWithTag("MainCamera");

//サブカメラ非アクティブ
subCamera.SetActive(false);
subCamera2.SetActive(false);

drone.SetActive(false);
drone2.SetActive(false);

}

public void ChangeCamera()
{
if (onsubc2 == false)
{
drone.SetActive(true);

mainCamera.SetActive(!mainCamera.activeSelf);
subCamera.SetActive(!subCamera.activeSelf);
onsubc = !onsubc;

}

}
public void ChangeCamera2()
{
if (onsubc == false)
{
drone2.SetActive(true);

mainCamera.SetActive(!mainCamera.activeSelf);
subCamera2.SetActive(!subCamera2.activeSelf);
onsubc2 = !onsubc2;
}
}

}

ボタンをクリックしても上空のメインカメラのビューが表示されてしまう。GameObject.FindWithTag("MainCamera”);にすると強制的にMainCameraオブジェクトのビューを表示されるのかと思ったが、カメラのdepthが問題であった。カメラのcullingmaskのminimap関係も外しておく。

mooseのskill3はFindwolfタグを見つけるParticlePlay youwolf = GameObject.FindWithTag("Findwolf").GetComponent< ParticlePlay>();を実行させ、wolf役を炙り出す能力だが、photon同期で異なるキャラクター自身から情報を取得しなければいけない。

これはphotonCountスクリプトでlobbyPlayerMaxCount == 2を割り当てた時点で、生成位置にparticleを生成させ、そのparticleにFindwolfタグをつけておけば、対処できそう。これにより、mooseはwolfの初期スポーン位置を炙り出せる。そこから情報を集め、wolfまで辿っていけばいい。

public void Mooseskill3()
{
ParticlePlay youwolf = GameObject.FindWithTag("Findwolf").GetComponent<ParticlePlay>();
youwolf.ParticleOn();
}

var vp = new Vector3(33, -1, 121);
PhotonNetwork.Instantiate("Particle System wolf", vp, Quaternion.identity);

生成時のparticleは地下に埋めておけば見えない。

次に、攻撃すると、回復するスキルの設定を考える。ダメージを与えた後にダメージ以上の回復量を与えてあげられるようにすれば良いのでデバフの設定と同じ。

public void Mooseskill4()
{
envPlaymove5photon = myPlayer.GetComponent<EnvPlaymove5photon>();
envPlaymove5photon.Moosehealflag();
}

public void Moosehealflag()
{
photonView.RPC(nameof(Mooseskill4photon), RpcTarget.All);
}

[PunRPC]
void Mooseskill4photon()
{
Debug.Log("Mooseskill4photon");
if (moosehealflag)
{
moosehealflag = false;
}
else
{
moosehealflag = true;
}
}

if (envPlaymove5photon.moosehealflag)
{
Debug.Log("DebuffcheckSuccess2");
powerRecoverall();

envPlaymove5photon.Moosehealflag();
}

続いて、mooseのwolfUIも変更していく。攻撃対象への金縛り効果はデバフと同じ対処。

public void MooseWskill1()
{
envPlaymove5photon = myPlayer.GetComponent<EnvPlaymove5photon>();
envPlaymove5photon.Moosestopflag();
}

Moose前方への範囲攻撃を下記をベースに実装する。

public void GetTargetRay()
{
float search_radius = 5f;

var hits = Physics.SphereCastAll(transform.position, search_radius, transform.forward, 0.01f).Select(h => h.transform.gameObject).ToList();

if (0 < hits.Count())
{
foreach (var hit in hits)
{
Debug.Log(hit);
if (hit.tag == "Player" && hit != ParentObject)
{
decoy = hit.GetComponent<Decoy>();
decoy.hp -= powerEnemy;
}
}

}
範囲内にいるプレイヤーオブジェクトのHPScript2 スクリプトを取得し、各オブジェクトに[PunRPC]void AttackDamage()を実行させれば良い。下記部分を修正。

public void MooseWskill2()
{
envPlaymove5photon = myPlayer.GetComponent<EnvPlaymove5photon>();
envPlaymove5photon.GetTargetRay();
}

public void GetTargetRay()
{
float search_radius = 5f;

var hits = Physics.SphereCastAll(transform.position, search_radius, transform.forward, 0.01f).Select(h => h.transform.gameObject).ToList();

if (0 < hits.Count())
{
foreach (var hit in hits)
{
Debug.Log(hit);
if (hit.tag == "Player" && hit != this.gameObject)
{
HPScript2 HPScript2 = hit.GetComponent<HPScript2>();
HPScript2.Mooseareaattack();
}
}

}
}

public void Mooseareaattack()
{
photonView.RPC(nameof(AttackDamage), RpcTarget.All);
}

これで一通りのキャラクターのUI連携が完了した。photonを用いた同期処理で問題がないか確認していく。

人気の記事

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.