質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Photon Server

Photon Serverは、オンラインゲーム開発向けネットワークエンジン。リアルタイムマルチプレイ通信のプラットフォームであるPhotonの一つで、サーバにインストールして使うサーバアプリケーションです。全てカスタマイズが可能で権限管理もできます。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

2859閲覧

Photon2でPhotonView.Destroyを使うとエラーが出る。

ChocoAnts

総合スコア5

Photon Server

Photon Serverは、オンラインゲーム開発向けネットワークエンジン。リアルタイムマルチプレイ通信のプラットフォームであるPhotonの一つで、サーバにインストールして使うサーバアプリケーションです。全てカスタマイズが可能で権限管理もできます。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/04/16 13:16

前提・実現したいこと

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で動作確認をしています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

TransferOwnership の引数は ActorNumber ではなく Player オブジェクトのインスタンスか、プレイヤーの ID ではないですか?

投稿2022/03/02 06:27

bboydaisuke

総合スコア5277

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ChocoAnts

2022/03/02 07:47

出来ました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問