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

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

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

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

Q&A

解決済

1回答

1156閲覧

Pun2相手のカメラ動かしてしまう

退会済みユーザー

退会済みユーザー

総合スコア0

Unity

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

0グッド

0クリップ

投稿2020/07/09 16:44

実現したいこと

自分の生成したカメラを操作したい

現状

自分の生成したステージの子オジェクトのカメラじゃなく相手の生成したカメラが動いてしまう
キーでは移動できるがボタンで移動できない。キャンバスが二つ生成されるので下記のせいでキャンセルされていると思うがいい対処法がわからない
if (EventSystem.current.IsPointerOverGameObject())
{
// かぶさってるので処理キャンセル(マウスクver)
return;
}
if (Input.touchCount > 0 && EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
{
// かぶさってるので処理キャンセル(タップver)
return;
}

試したこと

カメラを最初からステージに用意して後から子オブジェクトにしたがpublicからbuttonなどが消えて押しても意味がなくなった

該当コード

ステージ生成

public class GameControllerOnline : MonoBehaviourPunCallbacks { public GameObject wincanvas; public GameObject win; public GameObject lose; // Start is called before the first frame update void Start() { wincanvas.SetActive(false); win.SetActive(false); lose.SetActive(false); Player player = PhotonNetwork.LocalPlayer; if (player.IsMasterClient) { PhotonNetwork.Instantiate("CreateModeOnline", Vector3.zero, Quaternion.identity); } else { PhotonNetwork.Instantiate("CreateModeOnline", new Vector3(1000, 0, 0), Quaternion.identity); } } // Update is called once per frame void Update() { } public void HostWin() { Player player = PhotonNetwork.LocalPlayer; if (player.IsMasterClient) { win.SetActive(true); wincanvas.SetActive(true); } else { lose.SetActive(true); wincanvas.SetActive(true); } } public void GuestWin() { Player player = PhotonNetwork.LocalPlayer; if (player.IsMasterClient) { lose.SetActive(true); wincanvas.SetActive(true); } else { win.SetActive(true); wincanvas.SetActive(true); } } }

カメラ

public class StageObjectOnline : MonoBehaviourPunCallbacks { private Vector3 vec; public Button create; public GameObject target; private Vector2 mouse; private GameObject Stage; private GameObject player; private Vector3 velocity; private float speed = 100; private bool up; private bool down; public Text costtext; int cost; public Image createplayer; float count = 45; public GameObject tap; public GameObject createcanvas; AudioListener main; private GameObject root; // Start is called before the first frame update void Start() { target.SetActive(false); cost = PlayerPrefs.GetInt("Cost"); costtext.text = "Cost : " + cost; main = gameObject.GetComponent<AudioListener>(); createplayer.fillAmount = 0; count = 45; root = transform.root.gameObject; Stage = root.transform.Find("Stage1").gameObject; } // Update is called once per frame void Update() { if (photonView.IsMine) { velocity = Vector3.zero; if (Input.GetKeyDown(KeyCode.W)) { up = true; target.SetActive(false); } else if (Input.GetKeyDown(KeyCode.S)) { down = true; target.SetActive(false); } else if (Input.GetKeyUp(KeyCode.W) || Input.GetKeyUp(KeyCode.S)) { up = false; down = false; } if (up == true) { velocity.z += 1; } if (down == true) { velocity.z -= 1; } velocity = velocity.normalized * speed * Time.deltaTime; transform.position += velocity; if (Input.GetMouseButtonDown(0)) { if (EventSystem.current.IsPointerOverGameObject()) { // かぶさってるので処理キャンセル(マウスクver) return; } if (Input.touchCount > 0 && EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)) { // かぶさってるので処理キャンセル(タップver) return; } mouse = Input.mousePosition; target.SetActive(true); target.transform.position = mouse; create.interactable = true; } createplayer.fillAmount += 1.0f / count * Time.deltaTime; if (createplayer.fillAmount >= 1) { tap.SetActive(true); } } else { return; } } public void Up() { up = true; } public void Down() { down = true; } public void ButtonUp() { up = false; down = false; } public void Create() { if (photonView.IsMine) { if (cost > 0) { UnityEngine.Ray ray = Camera.main.ScreenPointToRay(mouse); RaycastHit hit = new RaycastHit(); if (Physics.Raycast(ray, out hit)) { if (hit.collider.CompareTag("Stage")) { create.interactable = true; target.SetActive(true); target.transform.position = mouse; vec = hit.point; Quaternion rotation = Quaternion.Euler(0f, 180f, 0f); GameObject ko = PhotonNetwork.Instantiate("SnowmanBlueOnline", vec, rotation); ko.transform.parent = Stage.transform; int createcost = ko.gameObject.GetComponent<EnemyStatusOnline>().cost; cost -= createcost; costtext.text = "Cost : " + cost; } else { create.interactable = false; } } } else { create.interactable = false; } } else { return; } } public void FindPlayer() { player = GameObject.Find("Player"); } public void Break() { int getcost; getcost = player.GetComponent<PlayerOnline>().Cost(); cost += getcost; costtext.text = "Cost : " + cost; } public void OnCreatePlayer() { if (photonView.IsMine) { if (createplayer.fillAmount >= 1) { Photon.Realtime.Player player = PhotonNetwork.LocalPlayer; if (player.IsMasterClient) { GameObject ko = PhotonNetwork.Instantiate("PlayerParentOnline", new Vector3(1000, 25, 0), Quaternion.identity); ko.transform.parent = Stage.transform; } else { GameObject ko = PhotonNetwork.Instantiate("PlayerParentOnline", new Vector3(0, 25, 0), Quaternion.identity); ko.transform.parent = Stage.transform; } createplayer.fillAmount = 0; tap.SetActive(false); createcanvas.SetActive(false); main.enabled = false; createplayer.fillAmount = 0; cost += PlayerPrefs.GetInt("Cost") / 2; costtext.text = "Cost : " + cost; } } else { return; } } public void PlayerDead() { createcanvas.SetActive(true); main.enabled = true; createplayer.fillAmount = 0; } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

maincamera.depth += 1;
で解決しました

投稿2020/07/10 01:14

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問