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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Unity3D

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

Unity

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

Q&A

解決済

1回答

1364閲覧

Photon 弾を打ったプレイヤー側で衝突判定

beginer_uni

総合スコア19

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2019/03/08 09:15

お世話になっております。Photonでオンラインゲームを作りたいのですが、プレイヤーの衝突判定を弾をうった側で処理したいです。以下のコード内に処理を実装したいのですが、弾が当たったプレイヤーが誰なのかを判定する方法がわからなくて困っております。当たったプレイヤーのIDなどを取得するためにはどのようにすれば良いのでしょうか。
いつも弾が当たった側で衝突判定をしているので苦戦しています。
ご教授いただけると幸いです。よろしくお願いいたします。

if(!photonView.IsMine){ //衝突判定 }

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

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

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

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

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

guest

回答1

0

ベストアンサー

実際に衝突するのが「弾」と「撃たれた相手」であれば、
処理できるのは「弾」か「撃たれた相手」のどちらかになるはずです。

仮に「弾」にアタッチしたスクリプトが処理するとします。
この時、弾は撃たれた相手を知ることが出来ます。
弾の OnCollisionEnter とかの引数から取得できるはずです。

もしも、弾の生成時に、弾に「撃った側」の参照を持たせてやっていれば、
弾を通して、「撃った側」に「撃たれた相手」を通知して、処理してやることも出来るのではないでしょうか。

なお、
https://www.urablog.xyz/entry/2016/10/04/082025
とかにもありますが、弾一つ一つを同期オブジェクトにするのは微妙っぽいです

投稿2019/03/11 13:52

miikun109

総合スコア16

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

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

beginer_uni

2019/03/12 00:17

回答ありがとうございます。 なるほどです。では、撃った側と撃たれた側のPhotonのIDを弾に渡し、弾からFindObjectsWithTag によってシーン内に存在するプレイヤーを取得させ、それらのIDと撃った人、撃たれた人の一致を確認させ、撃った人だったら得点加算、撃たれた人には体力減少を実装させる感じでしょうか。
miikun109

2019/03/12 11:47

一人が同期させるPhotonViewが一つしかないのであれば、 それでよいと思います。 弾を撃つ時に、弾のスクリプトに撃ったPhotonViewのownerIDを入れておいてやって、 衝突判定が発生したときに、 全PhotonViewのownerIDを比較して、 弾が持っているPhotonViewと同じであれば、 そいつでスコア加算処理をする、といった形ですね。 ただ注意が必要なのは、 上記の方法をすると各端末上で同じことが再現できるため、 全端末でスコアの加算も体力現象も起こってしまいます。 (「撃った人」の端末上の「撃たれた人」のスクリプトでも、「撃たれた人」の端末上の「撃たれた人」のスクリプトでも体力が減少する) それで問題があるようであれば、最後に isMine の時だけ処理をする、 といったことをして、 実際に計算する端末を制限して、結果を同期したほうが良いと思います。 なお、ラグを考慮すると、問題は複雑化するので、 そこは色々とご研究ください。
beginer_uni

2019/03/21 04:27

返信が遅れてしまい申し訳ありません。 なるほど。とても勉強になりました。chibi_miikun様のやり方でうまくいけました。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問