前提・実現したいこと
unityでPhoton2を使ったアプリで、あるプレイヤーが打った銃弾が、他のプレイヤーに当たったらその銃弾を、銃弾が当たったプレイヤーがPhotonView.Destroyを使って、削除したい。
例えば、プレイヤー1が打った銃弾がプレイヤー2に当たったら、プレイヤー2がその玉をPhotonView.Destroyを使って、削除したい。
発生している問題・エラーメッセージ
エラーは二つあります。 一つ目 Failed to 'network-remove' GameObject. Client is neither owner nor MasterClient taking over for owner who left: View 2003 on Bullet(Clone) 二つ目 Failed to find a PhotonView with ID=2003 for incoming OwnershipTransfer event (newOwnerActorNumber=2), sender=2
該当のソースコード
少しコードが長いので、銃弾を削除するコードと、銃弾を撃つコードを記載させていただきます。
もし足りない部分がありましたら、お伝えください。
if(Input.GetKeyDown(KeyCode.F))//Fキーがクリックされたら銃弾を撃つ { if(photonView.IsMine)//自分が操作しているキャラクターかどうか { //(muzzleTは、銃弾を出現させる位置です。) GameObject Pobj = PhotonNetwork.Instantiate("Bullet", muzzleT.position , Quaternion.identity , 0);//球を出現させる Pobj.GetComponent<Rigidbody>().velocity = muzzleT.transform.forward * BulletSpeed;//球を撃つ } } public void OnCollisionEnter(Collision collision)//キャラクターが何かに当たった時 { if(photonView.IsMine)//自分が操作しているキャラクターかどうか { if(collision.gameObject.name == "Bullet(Clone)")//当たったのが銃弾だったら。 { collision.gameObject.GetComponent<PhotonView>().TransferOwnership(PhotonNetwork.LocalPlayer.ActorNumber);//所有権を移す PhotonNetwork.Destroy(collision.gameObject);//球を消す。 } } }
試したこと
スクリプト内で、銃弾の所有権を移行しているので、銃弾(Bullet)のPhotonViewのインスペクタからオーナー設定をTakeoverにしました。
補足情報(FW/ツールのバージョンなど)
unityバージョン 2019.4.21f1
実行環境 mac Catalina
動作確認をする際は、androidにゲームをダウンロードして、androidとmacで動作確認をしています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/03/02 07:47