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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

Q&A

解決済

1回答

3083閲覧

PhotonでLine Rendererの同期方法

baseball

総合スコア8

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

0グッド

0クリップ

投稿2018/02/08 06:28

編集2018/02/08 08:27

前提・実現したいこと

UnityでPhotonを使用しているのですが、Line Rendererを通信している相手側にも同期させたいのですが、皆目検討がつきません。情報を知っている方がいたらご教授いただけると助かります。

該当のソースコード

using

1using System.Collections.Generic; 2using UnityEngine; 3using UnityEngine.UI; 4//using UnityEngine.SceneManagement; 5 6public class testLine : MonoBehaviour { 7 8 private LineRenderer lineRenderer; //LineRendererを入れているオブジェクトのデータ管理 9 10 int i; 11 int count=0; 12 13 14 void Start () { 15 16 } 17 // Update is called once per frame 18 void Update () { 19 20 LineRenderer renderer = gameObject.GetComponent<LineRenderer>(); 21 22 23 // 線の幅 24 renderer.SetWidth(0.1f, 0.1f); 25 // 頂点の数 26 renderer.SetVertexCount(3); 27 28 renderer.SetPosition(0,new Vector3(0f,0f, -1f)); 29 renderer.SetPosition(1, new Vector3(0f,10f, -1f));//x横y縦 30 renderer.SetPosition(2, new Vector3(2f,0f, -1f)); 31 32 count += 1; 33 34 35 } 36 37 38 public void RpcDrawLines(GameObject start, Vector3 end, bool isOn) 39 { LineRenderer beam = start.GetComponent<LineRenderer> (); 40 if (isOn) 41 { beam.SetVertexCount (2); 42 //beam.material = BeamMaterial; 43 beam.SetWidth (0.07f, 0.07f); 44 beam.enabled = true; beam.SetPosition (0, start.transform.position); 45 beam.SetPosition (1, end); } else { beam.enabled = false; 46 } 47 } 48 49 50 public bool isBeam = false; 51 //isBeam = true; // set this to false when you want to disable the beam 52 53 54 55 public void OnBeamActive(bool isOn) //buttenを押す等のアクション時に反応させる 56 { 57 58 59 LineRenderer renderer = gameObject.GetComponent<LineRenderer>(); 60 61 62 // 線の幅 63 renderer.SetWidth(0.1f, 0.1f); 64 // 頂点の数 65 renderer.SetVertexCount(3); 66 67 renderer.SetPosition(0,new Vector3(1f,1f, -1f)); 68 renderer.SetPosition(1, new Vector3(10f,10f, -1f));//x横y縦 69 renderer.SetPosition(2, new Vector3(2f,-20f, -1f)); 70 //targetは、ビーム/ラインの終点を参照するTransformです。あなたが望むようにそれを初期化する 71 } 72 73} 74

試したこと

https://translate.googleusercontent.com/translate_c?depth=1&hl=ja&prev=search&rurl=translate.google.co.jp&sl=en&sp=nmt4&u=https://gamedev.stackexchange.com/questions/131740/how-to-sync-a-linerenderer-in-a-multiplayer-game&usg=ALkJrhg7FGquSqt1Y4dx3ijKLl0p6mNZ4w
を参考にさせていただこうとしたのですが、知識も、経験も無くどう活用したらいいのかわかりません…>

補足情報(FW/ツールのバージョンなど)

UnityのC#を使用しています。
ここにより詳細な情報を記載してください。

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

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

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

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

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

fiveHundred

2018/02/08 07:51

これだけだと、情報が少なすぎて答えようがありません。最終的にどのようにしたいか、そのためにどこまで実装できていて、どこが分からないかなど、具体的に記載してください。また、可能であればソースも記載してください。ソースがないと一から作ることになるためです。質問の方法についてはhttps://teratail.com/help/question-tipsで詳しく書かれているので、参考にしてください。
guest

回答1

0

ベストアンサー

Photonでデータを同期するときは、まずPhotonViewが必要です。

そして、Photon.MonoBehaviourを継承したクラスで[PunRPC]属性をつけた関数を宣言し、それをPhotonViewのRPC関数で呼び出す形で同期します。

C#

1//宣言等省略 2 3class HogeHoge : Photon.MonoBehaviour 4{ 5 //PunRPC属性で相手側から呼び出せるようになります 6 [PunRPC] 7 private void RpcDrawLines(GameObject start, Vector3 end, bool isOn) 8 { 9 // 10 //描画の処理 11 // 12 } 13 14 public void DrawLines(GameObject start, Vector3 end, bool isOn) 15 { 16 //相手側の関数を呼び出し(この場合、RpcDrawLines関数) 17 photonView.RPC("RpcDrawLines", start, end, isOn); 18 } 19}

この場合、相手にLineRendererを送るよりも、LineRendererの情報を相手に送って相手に描画してもらうといいと思うので、PunRPCの属性を持つ関数に引数として情報を与え、相手側の関数を実行する形にするといいと思います。

投稿2018/02/08 09:11

capra314cabra

総合スコア222

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

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

baseball

2018/02/08 15:58

回答ありがとうございます。 その発想には恥ずかしながら至りませんでした… この方法で実装してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問