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

コロナによる需要変化 コロナパンデミックの影響で、人々は外に出られなくなり、自宅で過ごす時間が増えました。 この自粛ムードの中、下記のようなビジネスの需要変化が引き起こされています。 【利用者減少】 ...

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.