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

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

詳細はこちら
C#

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

Unity

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

Q&A

解決済

1回答

1214閲覧

unity スマホでの実行時に、画面のドラッグとダウンを分ける

kbys32

総合スコア55

C#

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

Unity

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

0グッド

0クリップ

投稿2019/10/13 10:07

編集2019/10/13 11:05

お世話になります。

前提・実現したいこと

立方体のゲームオブジェクトを設置し、これの画面を触れるとオブジェクトを選択、ドラッグするとオブジェクトが回転する、という挙動を行いたいのです。そのために、まずドラッグを実装することを考えています。

発生している問題

画面に触れて動かす前なのに、触れた途端にドラッグ扱いされ、物体が回転するので、困っています。

該当のソースコード

オブジェクトにくっつけたコードは以下の通りです。原点とオブジェクトの中心を合わせてあり、オブジェクト中心に回転します。

C#

1// Update is called once per frame 2void Update() 3{ 4 5 6 //オブジェクト回転 7 float deltay =-100f; 8  float deltax =-100f; 9 bool inputflag = false; 10 if (Input.touchCount > 0 && Input.touches[0].phase==TouchPhase.Moved) 11 { 12 //ドラッグ量 最初に触れただけのときは戻り値は0 のはず。 13 deltax = Input.touches[0].deltaPosition.x; 14 deltay = Input.touches[0].deltaPosition.y; 15 16//実際の回転処理 17 this.transform.RotateAround(new Vector3(0, 0, 0), new Vector3(0, 1, 0), deltax); 18 this.transform.RotateAround(new Vector3(0, 0, 0), new Vector3(1, 0, 0),deltay); 19 20 } 21}

どうすれば、画面に触れるだけのときに、ドラッグ扱いしないようにできますか。

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

unity 2019.1.11.f1 personal
テストしたアンドロイドスマホ:Huawei mate9

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

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

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

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

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

guest

回答1

0

自己解決

申し訳ございません。

PCでのエディター上の動作であり、関係ない処理だと思って省略していた、

C#

1 float sensitivity = 100f; // いわゆるマウス感度 2 float mouse_move_x = Input.GetAxis("Mouse X") * sensitivity; 3 float mouse_move_y = Input.GetAxis("Mouse Y") * sensitivity; 4if (Input.GetMouseButton(0)) 5 { 6 deltax=mouse_move_x; 7 deltay = mouse_move_y; 8 9 if ( (Mathf.Abs(deltax) >= 1.0f || Mathf.Abs(deltay) >= 1.0f)) 10 { 11 this.transform.RotateAround(new Vector3(0, 0, 0), new Vector3(0, 1, 0), deltax); 12 this.transform.RotateAround(new Vector3(0, 0, 0), new Vector3(1, 0, 0), deltay); Moved = true; 13 } 14 15 16 }

が、アンドロイド上でも動いていたので、これが悪さをしていました。
上記の
if (Input.GetMouseButton(0))

if (Application.isEditor && Input.GetMouseButton(0))
としたところ、意図した動作となりました。
お騒がせいたしました。

投稿2019/10/13 13:07

kbys32

総合スコア55

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問