code VR

Unity×VR(183)

スポンサーリンク

//tips

NFT(Non-fungible token)記事を見て、VRとの親和性の高さに驚愕した。購入した人が何年先の未来を想定しているのかが気になるところ。

//微調整

Demoでゴーレムを破壊してソウルを取得してもカウントが増加しない現象が起きたので要因を確認する。

エディターでまずは確認していく。確認したらエディターの方でもドロップしなくなっている。以前修正した際にはGolemSouldropスクリプトのif (collision.gameObject.tag == "Player”)に()が余分についていたことが要因だったが今回は異なる部分でのエラーのよう。

下記のコードは反応しているようなのでまずはドロップされていないのか、ドロップされてすぐに取得しているかの確認を行う。

if (gameObject.name == "Polygonal Golem Orange (1)(Clone)")
{
Debug.Log("GohlemSoul");

Golemfollow Golemfollow = GameObject.Find("GolemOrangefollow(Clone)").GetComponent<Golemfollow>();
Golemfollow.Dropgolemitem();
}

デバッグの進み具合から問題点を見つける。
下記のdropflagが変化せず、ゴーレム消滅時golemfollowのgolem.transform.position参照先がなくなることが影響しているのかもしれないと思い、PunRPCの内容にflag=trueを加えた。

if (!dropflag)
{
this.transform.position = golem.transform.position + offset;
}

 

[PunRPC]
void DoDropgolemitem()
{
Debug.Log("GohlemSoulDrop");

dropitem.SetActive(true);
dropflag = true;

}

これによりゴーレムソウルのドロップは問題なく行われるようになり、取得がうまくいった。

非表示になっているSampleSceneenv2オブジェクトのSampleSceneenv2スクリプトを削除。キャラクターが生成されない問題とdeerではなくfoxが生成される問題はSampleSceneenv2スクリプトが何かしら関与していると考えた。

念の為ロビーのcontentオブジェクトにアタッチされている NetworkManagerBを確認し、ボタンを押された際の処理内容を確認したが、Env2ルームをしっかり作っており、scenemoveスクリプトでルーム名を参考に遷移先を決めているので問題はなさそう。

if (PhotonNetwork.InLobby)
{

Debug.Log("CheckMynumber()");
Debug.Log(Mynumber);

if (Mynumber == 1)
{
PhotonNetwork.JoinOrCreateRoom("Env2", roomOptions, TypedLobby.Default);
}

懸念点としてボタンを2度押しした場合はどうなるのかが出てきたので実験して試してみる。ボタンを2度以上連打してから他のシーンでルームに参加しても参加者のカウントは間違わずにできている。

きちんと全シーンでプレイヤーが正常に表示された。プレイヤー生成エラーが発生した際に再度確認する。

再度ゴーレムの挙動に戻り、ゴーレムが止まっている場合はパンチモーションも止まるはずが、パンチモーションをされている状況を観測できたので修正を加える。

プレイヤーが攻撃範囲に入った後に離脱した場合であったので、OnTriggerExitが発動しているはずである。

void OnTriggerExit(Collider col)
{
if (col.tag == "Player")
{
moveEnemy.SetState(MoveEnemy.EnemyState.Wait);
moveEnemy.punchflag = false;
moveEnemy.onchase = false;
moveEnemy.animator.SetBool("PunchAttackB", false);
}
}

デバッグログを追加。exitの際に別のコライダーを取得しているのではないかと考えた。waittimeをさらに短くして様子を見ていく。

Waittimeの短縮でかなり状況が改善されたのでこのまま進めていく。

消滅後のゴーストモードでカメラが回転できず使いずらかったのでスクリプトをPlayerMoveRに変更。

ゴーストモードの仕組みは大丈夫だが、スクリプトは直感的に使えるように常にmoveforwardとする形に変更する。

時間を短縮したことでpunchflag = true;の状態が恒常化してしまっているので void OnTriggerExit(Collider col)の方にもmoveEnemy.rightfootcollider.enabled = false;を加える。

かなり改善された。

プレイヤーがシーンに生成されない問題の手がかりが掴めたのでそちらの解決を進めていく。

エディターで参加した場合にもプレイヤーが生成されない状態で遷移してしまい、
その際には
・Nowloadingphotonスクリプトのメンバー数は4人まで記録される
・Termcheckスクリプトの 下記ではプレイヤー数が2人から0人になる
players = GameObject.FindGameObjectsWithTag("Player");
Debug.Log(players.Length);
・NPCMasterClientスクリプトのログは3回Debug.Log("notMasterClient”);で記録される

といったログを確認できた。ここから問題を解決していく。

人気の記事

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.