■概要
UnityでPhotonを使いオンラインゲームを作っています
キャラクターがコインを取得すると、Unityちゃんスクリプト内のcoin_number変数を+1し、
CanvasのNumberOfCoinsのText表示を更新します。
■問題点
1人でログインしていると問題なくText表示までできるのですが、
2人でログインすると、プレイヤー1でコインを取得すると、プレイヤー2のTextが更新されてしまします。
コインの所持数が逆転してしまっている状態です。
こちらの問題を解決したいです。
お手数おかけいたしますが、よろしくおねがいします。
■問題の可能性
プレイヤー1のコインの当たり判定が、プレイヤー2にも影響している可能性?がありそうです。
Collisionの処理が問題あるかもしれません。
■ソースコード 文字制限により一部のみ抜粋
namespace UnityChan { //継承先を修正する。他のインスタンス(キャラ)に操作が影響しないようにする public class UnityChanControlScriptWithRgidBody : Photon.Pun.MonoBehaviourPun { public GameObject Coin_Object = null; public int i = 0; GameObject unitychan;//Unityちゃんを入れる public int coin_number = 0; //所持コイン枚数 // 初期化============================================================= void Start () { i = 1; //ユーザーIDでチームを割り振る if (photonView.OwnerActorNr == 1) { team = "red"; e_team = "blue"; //Debug.Log("チームはred"); } else { team = "blue"; e_team = "red"; //Debug.Log("チームはblue"); } Debug.Log("OwnerActorNr:" + photonView.OwnerActorNr + " チーム:" + team + " NickName:" + photonView.Owner.NickName); gameObject.name = "Player["+ photonView.OwnerActorNr + "]"; //効果音の処理 audioSource = GetComponent<AudioSource>(); gamecontrol = GameObject.Find("GameControl"); //共通処理用のオブジェクトを取得 gamecontrol_script = gamecontrol.GetComponent<GameControl>();//共通処理のスクリプトを取得 } void FixedUpdate () { //コインの表示を更新するスクリプト if (i == 1) { Coin_Object = GameObject.Find("NumberOfCoins"); //この二行をStartに持ってくると何故かcoin_textが存在しないと言われる謎。 Text coin_text = Coin_Object.GetComponent<Text>(); // テキストの表示を入れ替える ★このあたりがおかしい? coin_text.text = "コイン枚数" + coin_number; Debug.Log(unitychan + "のコイン枚数:" + coin_number); } } //★ボタン関数系★ //ガチャでアイテムを放出する public void GachaButton() { //所持コイン枚数で判断 if (coin_number>=1) { //ガチャの処理 省略 coin_number = coin_number -1; //所持コインの枚数を減らす } else { //なければアラートの処理 //画面中央にコインがないと一定時間表示して消す } } //★プレイヤーが何かに触れたときの挙動★ void OnCollisionEnter(Collision collision) { //Coin以外の衝突処理 省略 //★コイン以外の衝突処理は正常なので、やはり表示のみがおかしい? //コインの取得枚数処理 ★こいつが両者で反応してしまっている? if (collision.gameObject.name == "Coin") { Debug.Log("Coin Get"); coin_number += 1; Debug.Log("ユーザー名:" + team + " コイン枚数coin_number:" +coin_number); //触れたらコインカウント増やして、所持枚数表示を更新する audioSource.PlayOneShot(sound1); } } } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/06 01:36