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

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

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

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Unity3D

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

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

受付中

UnityRemoteを利用したスライド操作の確認ができない(なぜか再生プラットフォームがWindowsEditorになる)

senseIY
senseIY

総合スコア277

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Unity3D

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

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

1回答

0リアクション

0クリップ

156閲覧

投稿2022/09/25 05:34

編集2022/09/25 06:40

前提

unityremoteを利用してスマホの画面からでも正常に動作することを確かめようとしたが、なぜか再生プラットフォームがwindowsEditerになってしまい、再生プラットフォームをAndroidにすることができない

該当のソースコード(長いので必要な部分のみ updateの部分が問題の箇所)

cs

using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { [SerializeField] GameObject attackHit = null; [SerializeField] ColliderCallReceiver footColliderCall = null; [SerializeField] float jumpPower = 20f; Animator animator = null; Rigidbody rigid = null; bool isAttack = false; bool isGround = false; bool isTouch = false; float horizontalKeyInput = 0; float verticalKeyInput = 0; Vector2 leftStartTouch = new Vector2(); Vector2 leftTouchInput = new Vector2(); // Start is called before the first frame update void Start() { animator = GetComponent<Animator>(); rigid = GetComponent<Rigidbody>(); attackHit.SetActive(false); // FootSphereのイベント登録 footColliderCall.TriggerStayEvent.AddListener(OnFootTriggerStay); footColliderCall.TriggerExitEvent.AddListener(OnFootTriggerExit); } // Update is called once per frame void Update() { Debug.Log(Application.platform); if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer) { Debug.Log("OSチェック"); // スマホタッチ操作 // タッチしている指の数が0より多い if (Input.touchCount > 0) { Debug.Log("タッチしている"); isTouch = true; // タッチ情報をすべて取得 Touch[] touches = Input.touches; foreach (var touch in touches) { bool isLeftTouch = false; bool isRightTouch = false; if (touch.position.x > 0 && touch.position.x < Screen.width / 2) { isLeftTouch = true; } else if (touch.position.x > Screen.width / 2 && touch.position.x < Screen.width) { isRightTouch = true; } if (isLeftTouch == true) { // タッチ開始 if (touch.phase == TouchPhase.Began) { Debug.Log("タッチ開始"); leftStartTouch = touch.position; } // タッチ中 else if (touch.phase == TouchPhase.Moved || touch.phase == TouchPhase.Stationary) { Debug.Log("タッチ中"); Vector2 position = touch.position; leftTouchInput = position - leftStartTouch; } // タッチ終了 else if (touch.phase == TouchPhase.Ended) { Debug.Log("タッチ終了"); leftTouchInput = Vector2.zero; } } if (isRightTouch == true) { } } } else { isTouch = false; // Debug.Log("何かしらが原因でAndroidプラットフォーム判定がされていない"); } } else { Debug.Log("PC操作です"); // PCキー入力取得 horizontalKeyInput = Input.GetAxis("Horizontal"); verticalKeyInput = Input.GetAxis("Vertical"); }

試したことや考察など

ある教材の通りに「プレイヤーをスマホのタッチ操作で移動させる」という作業をしています。ですが、上手く行きませんでした。

1 これまで行った操作に間違いがある可能性

・教材では、Device Simulatorを使用して作業をしていましたが、どうやら現在のUnity(2021.3.10f1)ではSimulatorが常設されたようなので、パッケージマネージャを使用してDevice SimulatorをインストールしなくてもSimulatorを操作できるようです。そのため、Device Simulatorのインストールの部分をスキップして作業を進めました。

・その後画像のような設定を行いました。
イメージ説明
・Unityremoteはこちらのサイトを参考に設定を確認しました

・buildsettingはAndroidになっています。

2 どこでエラー(意図せぬ挙動)が起きているのか

・デバッグログを仕込んだ(上のコードの通り)ところ、以下のことが判明しました。

・ Debug.Log(Application.platform);を記述すると、なぜか「WindowsEditor」が表示される。*本来なら、ここにAndroidが出てくる(と予想していた)。

・また、実際に接続しているAndroid端末では一応ボタンクリックによる操作は正常に動作していた。*これはスマホ上でwendows用のモードで動いていたから。

・Unityremoteを使用せずに実際にbuildして動作確認を行った際は上手く動いた(Android端末でクリック、フリック操作ができた。*今作成しているアプリケーションとは別のものではあるが)

 ここで詰まってしまいました。なぜ再生プラットフォームがAndroidにならないのでしょうか?何かしらアドバイスをいただければ幸いです。もし不備があれば追記いたします。よろしくお願いいたします。

追記 
恐らくプラットフォームをAndroidに出来れば正常に動作しそうです。ですが、現在buildsettingをAndroidに設定しているため、恐らくプラットフォームはAndroidになっているはずです。(実際にはWindowsになってしまっているようではあるが)現時点ではとりあえず、条件分岐を無視してスマホ専用に開発を進めています。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Unity3D

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

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。