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

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

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

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

Unity

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

Q&A

解決済

1回答

789閲覧

Unityでタッチ操作ができません

zer

総合スコア12

Unity3D

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

Unity

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

1グッド

0クリップ

投稿2019/02/25 13:17

前提・実現したいこと

Unityで弾幕ゲームを作っています。
TouchScriptというAssetを使用してプレイヤーをタッチ(現在はマウス)で操作しているのですが、X軸Y軸が共に0のところでプレイヤーを離すと、再度タッチしても反応がなく動きません。
3Dで作っていますが、プレイヤーは平面の範囲でのみ動きます。
どのような解決方法が考えられますでしょうか。何卒宜しくお願い致します。

試したこと

1.プレイヤーにRigidbodyをつけ、X軸Y軸0のところでとどまらないようにしました。→操作性が悪くなりやめました。
2.重なり合っている背景とプレイヤーのLayerについてProjectSetting→Physicsのところで当たらないようにチェックを外しました。

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

Unity 2018.3.5f1 Personal

bochan2👍を押しています

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

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

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

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

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

sakura_hana

2019/02/25 16:39

Debug.Logなどを仕掛けて、「本当にタッチが取得出来ていない(のでプレイヤーも動かない)」「タッチは取得しているがプレイヤーを動かすスクリプトが動作していない」「プレイヤーを動かすスクリプトは動作しているが、画面上では動いていない(何かのオブジェクトに衝突している等)」のどれなのかをまず調べてみてください。
zer

2019/02/26 13:15

コメントありがとうございます。 プレイヤーにDebug.Logを仕掛けてみたところ、タッチが出来ていないためにプレイヤーが動かないようです。X軸Y軸共に0の位置にあるのは、Main Camera、背景、EventSystem、Cursorsです。 何卒宜しくお願い致します。
sakura_hana

2019/02/26 14:47

Cursorsが怪しい(タッチ阻害している・「当たらないように」の処理が実は出来ていない)ですが、スクリプト側の問題かもしれません。コード提示してもらえると分かるかもしれないです。
zer

2019/02/27 12:39 編集

スクリプトは以下の通りです。宜しくお願い致します。 using UnityEngine; using System.Collections; using UnityEngine.UI; public class PlayerController : MonoBehaviour { public int m_hpMax; public int m_hp; public GameObject Explosion; private Vector3 pos; public GameObject Kira; GameObject clickedGameObject; private void Awake() { m_hp = m_hpMax; } void Update() { Clamp(); gameObject.transform.localScale += new Vector3(0.00001f, 0.00001f, 0); if (Input.GetMouseButtonDown(0)) { clickedGameObject = null; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit = new RaycastHit(); if (Physics.Raycast(ray, out hit)) { clickedGameObject = hit.collider.gameObject; } Debug.Log(clickedGameObject); } } void Clamp() { pos = transform.position; pos.x = Mathf.Clamp(pos.x, -2.0f, 2.0f); pos.y = Mathf.Clamp(pos.y, -4.0f, 4.0f); transform.position = pos; } void OnTriggerEnter(Collider collision) { if (collision.name.Contains("")) { Instantiate(Explosion, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity); } if (collision.name.Contains("")) { Instantiate(Explosion, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity); } if (collision.name.Contains("Item")) { Instantiate(Kira, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity); } } void OnCollisionEnter(Collision collision) { } public void Damage(int damage) { m_hp -= damage; if (0 < m_hp) return; gameObject.SetActive(false); } public void Recovery(int recovery) { m_hp += recovery; } }
zer

2019/02/27 13:06 編集

あとはTouchScriptのTransformerとTransformGestureというスクリプトがついております。 TouchScriptのコードは書いて良いものか判断に迷ったため、書くのは控えております。
sakura_hana

2019/03/01 09:58

移動はTransformerとTransformGestureに任せているようですね。 「TransformerとTransformGestureだけにする(他の自作スクリプトは外す)」「他のオブジェクトを1つずつ減らしていく(影響の有無をチェック)」を試してみてください。
zer

2019/03/02 10:47

コメントありがとうございます。 メインカメラが0,0,-10のところにあるのですが、1,1,-10にずらしたところ、1,1,0のところでプレイヤーの動きが止まりました。 メインカメラに問題があるようなのですが、どのように対処すれば良いのかがわかりません。 何卒宜しくお願い致します。
guest

回答1

0

ベストアンサー

こちらでも該当アセット入れて確認しました。
恐らくRenderModeがScreen Space - OverlayのCanvas(の中に入っているUI)か、カメラの子オブジェクト(見えないがColliderを持つオブジェクト)が入力を阻害しています。

以下のいずれかの方法で対応可能かと。

1.阻害しているオブジェクトのLayerを任意に設定後、StandardLayerコンポーネントのLayer MaskからそのLayerのチェックを外す
(自分でStandardLayerを付与していない場合はMainCameraに付与してから上記設定にする)

2.阻害しているのがUIの場合:StandardLayerコンポーネントの「Hit 〜 UI」のチェックを外す(2箇所)
(自分でStandardLayerを付与していない場合はMainCameraに付与してから上記設定にする)
(UIも動かすつもりの場合はこれだとダメなので方法3以降で)

3.阻害しているのがUIの場合:CanvasのRenderModeをScreen Space - Cameraに変更し、RenderCameraにカメラを設定
(この場合3D/2DオブジェクトがUIの上に重なるので問題がある場合は方法4で)

4.阻害しているのがUIの場合:タッチを阻害しているコンポーネント(TextやImage等)のRaycast Targetのチェックを外す
(TouchScriptだけでなくUnity標準のクリックも無効化されます)

投稿2019/03/03 12:28

sakura_hana

総合スコア11427

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

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

zer

2019/03/04 18:10

ありがとうございます。 現時点でUIが無いため、1と2を試してみたところ変化はありませんでした。 他に何か対処法は考えられますでしょうか。何卒宜しくお願い致します。
sakura_hana

2019/03/05 12:04

それだと何か根本的な問題があるのかもしれません。 新しいプロジェクトを作成し、TouchScriptのみをインポート、同様の挙動が起こるか確認 →徐々に現状のプロジェクトに近付けながら原因を探る、という形かと思います。 (一応TouchScriptのバージョンも確認してください)
zer

2019/03/06 09:30

ありがとうございます。確認致します。 この度は有益な助言をありがとうございました。今後バグが発生した際にも参考にさせていただきます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問