//tips
//photonでのpanel表示の修正
Photonを利用するとシーンに最初から設置しておいたパネル操作がシーン共通で行われてしまうので該当者のみのパネル表示に変えていく。
ポストへの接触はsoulpostオブジェクトにアタッチされた、SoulPostTrrgerスクリプトの下記のコードで記されており、対象プレイヤーのphotonview.ismineを調べることで分岐させられないか考える。
private void OnTriggerStay(Collider other)
{
if (other.gameObject.tag == "Player")
{
//_time += Time.fixedDeltaTime;//物理演算の処理内では固定フレームなので Time.deltaTimeはいまいちとのこと
_time += Time.deltaTime;//違和感は特に感じなかったのでTime.deltaTimeへ
if (_time >= _targetTime)
{
if (!stayflag)
{
OpenSoulPost();
}
_time = 0;
}
}
}
プレイヤーがポストに入っている状態及びプレイヤーがphotonviewismineの場合に処理を実行したいので下記のように書き換えた。
PhotonView photonView;
private void OnTriggerStay(Collider other)
{
if (other.gameObject.tag == "Player")
{
photonView = other.gameObject.GetComponent<PhotonView>();
if (photonView.IsMine)
{
//_time += Time.fixedDeltaTime;//物理演算の処理内では固定フレームなので Time.deltaTimeはいまいちとのこと
_time += Time.deltaTime;//違和感は特に感じなかったのでTime.deltaTimeへ
if (_time >= _targetTime)
{
if (!stayflag)
{
OpenSoulPost();
}
_time = 0;
}
}
}
}
これによりpanel表示の同期問題も解決した。deerのwolfmodeのUIも調整していく。
実装できたのでゴーレムのダメージスクリプトも確認し、hPScript = other.gameObject.GetComponent<HPScript2>();と修正する。
またゴーレムの右手のコライダーのタグはWeaponに変更せず、攻撃させる。ゴーレムの攻撃がなかなか当たらないのでコライダーのradiusを1に拡大。多段ヒット気味になっているがダメージは与えられるようになった。
やはりゴーレムの動きがおかしいのでスクリプトを確認していくと、navMeshAgent.remainingDistanceの条件でSetState(EnemyState.Wait);にセットされているはずなのでコンソールにはずっとchase中であるというデバッグが流れるので、SetStateがうまく機能していないか、超高速でSetState(EnemyState.Wait);の内容が処理されてしまっているので、意味を成していないという場合が考えられる。
navMeshAgent.isStopped=true;の挿入で強引に止めようとするも全く止まらない。
しょうがないのでrigidbodyでfreezeさせた。rigd.constraints = RigidbodyConstraints.FreezePosition; がそれでも止まらない。
navMeshAgent.speed=0;で止めることができた。ただ、chaseとwaitの連携がうまくいかず、waitでのパンチ射程圏内にもかかわらず、chaseモードのままで動作しているので要因を見つける。