🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Unity

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

Q&A

解決済

2回答

4038閲覧

タッチ操作でオブジェクトをグリグリ回す ネットを見ているのですが,上手く行きません。

tamachan2020

総合スコア31

Unity

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

1グッド

1クリップ

投稿2019/11/23 07:00

編集2019/11/23 09:39

前提・実現したいこと

タッチ操作でオブジェクトをグリグリ回す ネットのサンプルを実行したいのですが
HierachyのCube - - > InspectorのTouchControllerにDragしようとしているのですが
上手く行きません。
その為,実行してもTouchController.csのvoid Update()の処理に来ません。

URL
私のsource
netのsource
イメージ説明

該当のソースコード

unity

1 2using UnityEngine; 3using System.Collections; 4using System.Linq; 5 6public class TouchController : MonoBehaviour 7{ 8 9 /// <summary>回転対象</summary> 10 public GameObject Cube; 11 /// <summary>回転速度</summary> 12 public float Speed = 0.01f; 13 14 void Update() 15 { 16 //タッチ数取得(Linq使えた) 17 int touchCount = Input.touches 18 .Count(t => t.phase != TouchPhase.Ended && t.phase != TouchPhase.Canceled); 19 20 if (touchCount == 1) 21
退会済みユーザー👍を押しています

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

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

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

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

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

vo3

2019/11/23 08:53

あんまり見れてないですが、Input.touchesを使っているってことはタッチをサポートしているもので、Editorの場合はマウスだから取れていないのではないかと。 実機端末での確認で動かないのでしょうか?
tamachan2020

2019/11/23 09:07

int touchCount = Input.touches .Count(t => t.phase != TouchPhase.Ended && t.phase != TouchPhase.Canceled); にブレイクポイントをつけて実行しているのですが止まりません。
guest

回答2

0

Updateが動作しているか確認出来るまで1つずつ解決していってみましょう

1 Cube(箱)を配置する

現在の所ネットにあるような木製の四角の表示も出ていないのですが

イメージ説明
こちらはHierarchyビューで右クリックをして3D Object > Cubeを選択してCubeを配置してみましょう、サイトのように木製の四角ではありませんが動作確認するには充分です

イメージ説明

2 サイトと同様のTouchControllerスクリプトを作成する

イメージ説明
イメージ説明

作成したTouchController.csにサイトのコードを書く

※ 作成したスクリプトの名前と記載したコードのクラス名がTouchControllerでないと動作しません

3 TouchControllerコンポーネントを空のゲームオブジェクトにアタッチする

イメージ説明

イメージ説明

ProjectビューからのTouchController.csをInspectorビューにドラッグアンドドロップしても問題ないですが、今回はInspectorビューのAdd Componentからアタッチしています

イメージ説明

ここまでの流れで出来ないことがあれば新しくUnityプロジェクトを作り直して1からやり直してみるのも手です

4 スクリプトのUpdateが動作しているか確認する方法

スクリプトの中のupdateの先頭にも止まらないので

tamachan2020様はブレークポイントによる動作確認をされていますが、デバッグ方法が合っておらず動作していない可能性も考えられるので、今回はコードベースでデバッグしてみましょう。
TouchController.csのコードを下記のように変更してみて、Consoleビューにログが表示されるか確認してみてください。

cs

1using UnityEngine; 2using System.Linq; 3 4public class TouchController : MonoBehaviour 5{ 6 /// <summary>回転対象</summary> 7 public GameObject Cube; 8 /// <summary>回転速度</summary> 9 public float Speed = 0.01f; 10 11 void Update() 12 { 13 //タッチ数取得(Linq使えた) 14 int touchCount = Input.touches 15 .Count(t => t.phase != TouchPhase.Ended && t.phase != TouchPhase.Canceled); 16 17 // デバッグ用に追加した処理、UnityエディタのWindows > General > Consoleから確認出来るログにタッチ数を表示します 18 Debug.Log($"タッチ数: {touchCount}"); 19 20 if (touchCount == 1) 21 { 22 Touch t = Input.touches.First(); 23 switch (t.phase) 24 { 25 case TouchPhase.Moved: 26 27 //移動量に応じて角度計算 28 float xAngle = t.deltaPosition.y * Speed * 10; 29 float yAngle = -t.deltaPosition.x * Speed * 10; 30 float zAngle = 0; 31 32 //回転 33 Cube.transform.Rotate(xAngle, yAngle, zAngle, Space.World); 34 35 break; 36 } 37 } 38 } 39}

投稿2019/11/23 10:20

編集2019/11/23 10:23
tomori_hikage

総合スコア28

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

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

tamachan2020

2019/11/30 03:59

返事が遅くなってしまい申し訳御座いませんでした。別の質問を投稿していたら回答があったので実行したら上手く行きました。コンソールビューにログが表示されました。(すごく丁寧に書いていただき感激しています) ツイッターもフォローしたのですが、活躍というかすごいですね。応援しています?
guest

0

ベストアンサー

【Unity】タッチ操作でオブジェクトをグリグリ回す

tamachan2020様が貼られた上記の記事を参考に実行してみましたが動作しましたので考えられる原因を記載してみます。

  1. Unityエディタ上(Windows, Mac)で実行して動作しない

下記の記事の通りInput.TouchesはiPhoneやAndroid向けにビルドして実機で動作させないと動作しません
Input.Touchesをエディタでデバッグする方法
目的に応じて、方法を変えると良いと思います
・最終的にビルドして実機で動作させたい → 毎回ビルドして動作確認するか下記のようなエディタと実機どちらでも動作するようなコードを利用する
UnityでiOS/Android/Editorの共通タッチ処理を実装する
・iPhoneやAndroidで動作させる必要がなく、WindowsやMac上で動作すれば良い → Input.GetMouseButton, Input.GetMouseButtonDown系のメソッドを利用する

  1. iPhoneやAndroid向けにビルドして実機で動作させているが動作しない

セットアップに失敗している可能性があります、UnityエディタのWindows > General > Consoleから赤色でエラーが出ているか確認してみたり、下記のサイトでどういう操作をしたのかスクリーンショットを貼ってみたりしていただければ改めて調査してみます。
【Unity】タッチ操作でオブジェクトをグリグリ回す

投稿2019/11/23 09:24

tomori_hikage

総合スコア28

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

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

tamachan2020

2019/11/23 09:55 編集

mac上でマウスで移動,拡大などのアプリを作りたいのですが,現在の所ネットにあるような木製の四角の表示も出ていないのですが、スクリプトの中のupdateの先頭にも止まらないので HierachyのCube - - > InspectorのTouchControllerにDrag出来ないのが問題の一つではないかと考えています。 しかしネットのサンプルをすぐ動かせるのはすごいですね。私などまだまだです。
tamachan2020

2019/11/23 09:53

最終的にはiPhoneやAndroidで動作させたく,現在はmacにてテストしています。
tamachan2020

2019/11/23 09:56

ネットにある 実行する前に忘れず TouchControllerオブジェクトへスクリプト適用 TouchControllerコンポーネントに回転対象Cube適用 <---現在出来ない
tamachan2020

2019/11/23 10:17

すみません。ネットではなく自分の作ったpgで今度教えて頂けませんか。 再度,投稿します。
tomori_hikage

2019/11/23 10:22

>TouchControllerオブジェクトへスクリプト適用 >TouchControllerコンポーネントに回転対象Cube適用 <---現在出来ない 返信ありがとうございます、画像を掲載するために一連の流れのスクリーンショットで改めて回答してみました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問