//tips
//キャラクター同期対応継続
Rabbitの動作確認は完了したので、次はbearの動作確認に移っていく。Bearの攻撃がdeerに当たらないのでprefabをチェック、コライダーもついているし、攻撃モーションの判定はでている。
Bearにもcameraを追加して確認する。動作画面で確認してみるとUIクリックがエラーで実行されていない。
public void Bearskill1()
{
charaModeManager.Deerpowerturnon();
}
Charamodemanagerがアタッチされているオブジェクトにphotonviewがアタッチされていないのが問題。後から修正したポイントなので他のキャラも同じく修正。
それでもBearのUIをタップすると下記のエラーが表示され、Bearprefabを確認するもPlayertagも付けられているし、photonviewもtrueになっている。BearUIもきちんとdetractionlistスクリプトがアタッチされていた。
NullReferenceException: Object reference not set to an instance of an object
DeerActionlist.Bearskill1 () (at Assets/Charafunc/DeerActionlist.cs:159)
原因を探していくと、detractionlistのメソッドの中身にcharaModeManager = myPlayer.GetComponentInChildren<CharaModeManager>();が追加されていなかったのが問題であった。
また、weaponタグが外れていたので再設定。
これで無事に攻撃できるようになった。wolfUIのスキルチェックも同時に行う。全員にダメージを与えるスキルでエラーが生じたので内容を確認する。
public void BearWskill3()
{
HPScript2 HPScript2 = myPlayer.GetComponent<HPScript2>();
HPScript2.Damageallplayer();
}
public void Damageallplayer()
{
photonView.RPC(nameof(DoDamageallplayer), RpcTarget.All);
}
[PunRPC]
void DoDamageallplayer()
{
playerobjs = GameObject.FindGameObjectsWithTag("Player");
foreach (GameObject obs in playerobjs)
{
playerhp = obs.GetComponent<HPScript>();
playerhp.hp -= 1;
}
}
NullReferenceException: Object reference not set to an instance of an object
HPScript2.DoDamageallplayer () (at Assets/HPScript2.cs:295)
これは自身のHPscript2で同期先の自身も含め、全プレイヤーを取得するDamageallplayer();を実行させ、各シーンにるbearがDoDamageallplayer()で全プレイヤーのhpを減少させる。
型を宣言するHPScript2が抜けていたのでplayerhp = obs.GetComponent<HPScript2>();の先頭に追加。さらにHPScript2に修正。
これでBearの各スキルは反映された。気になったのがBearのIdle状態によってcameraが常に回転してしまうこと。
BearIdleモーションを複製し、RootTransformrotationのBakeintoposeにチェックを入れることでカメラが若干回転する現象をなくすことができた。
次はFoxの設定を確かめていく。