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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

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

Q&A

0回答

1864閲覧

unity floating joystickを思うように使えません。

chi-su

総合スコア0

C#

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

0グッド

0クリップ

投稿2021/06/15 13:29

前提・実現したいこと

unity使い始めの初心者です。
unityで二人で対戦するシューティングゲームを作っています。この2dゲームを作る際にjoystick packのfloating joystickを使用したのですが、そのfloating joystickの範囲内のところを最初にワンタップしたときにfloating joystickをつけたキャラクターが画面左下に高速で移動してしまいます。(画面外にでないようにキャラクターには移動制限をつけています。)移動している軌道はかろうじて見えます。何度繰り返しても最初のワンタップで同じ左下に移動してしまいます。(最初のワンタップのときにはjoystickは表示されません。)高速で移動した後にはそこからfloating joystickをつけたキャラクターを好きなように動かすことができます。(このときjoystickは表示される。)
読みにくい文章で申し訳ありません。

該当のソースコード

c#

1 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5using UnityEngine.UI; 6 7public class Player1Controller : MonoBehaviour 8{ 9 public FloatingJoystick joystick; 10 public float speed; 11 public int HP1Max; 12 public GameObject ExplosionEffect; 13 public AudioClip explosionClip; // 爆発した時に再生する SE 14 public AudioClip damageClip; // ダメージを受けた時に再生する SE 15 16 private Vector3 Player_pos; //プレイヤーのポジション 17 private float x; //x方向のImputの値 18 private float y; //z方向のInputの値 19 private int HP1; 20 Slider sliderHP1; 21 22 // Start is called before the first frame update 23 void Start() 24 { 25 Player_pos = GetComponent<Transform>().position; //最初の時点でのプレイヤーのポジションを取得 26 HP1 = HP1Max; 27 sliderHP1 = GameObject.Find("HP1").GetComponent<Slider>(); 28 29 } 30 31 32 // Update is called once per frame 33 void Update() 34 { 35 x = joystick.Horizontal; 36 y = joystick.Vertical; 37 38 39 40 } 41 void FixedUpdate() 42 { 43 transform.position = new Vector3( 44 //エリア指定して移動する 45 Mathf.Clamp(transform.position.x + x * Time.deltaTime * speed, -2.5f, 2.5f), 46 Mathf.Clamp(transform.position.y + y * Time.deltaTime * speed, -4.5f, 4.5f), 47 0 48 ); 49 50 Vector3 diff = transform.position - Player_pos; 51 Player_pos = transform.position; 52 53 if (diff.magnitude > 0.01f) //ベクトルの長さが0.01fより大きい場合にプレイヤーの向きを変える処理を入れる(0では入れないので) 54 { 55 transform.rotation = Quaternion.FromToRotation(Vector3.up, diff); 56 } 57 58 } 59 // 他のオブジェクトと衝突した時に呼び出される関数 60 private void OnTriggerEnter2D(Collider2D collision) 61 { 62 // 弾と衝突した場合 63 if (collision.name.Contains("Bullet2")) 64 { 65 // 弾を削除する 66 Destroy(collision.gameObject); 67 68 // 敵の HP を減らす 69 HP1--; 70 sliderHP1.value = HP1; 71 // ダメージを受けた時の SE を再生する 72 var audioSource1 = FindObjectOfType<AudioSource>(); 73 audioSource1.PlayOneShot(damageClip); 74 75 // 敵の HP がまだ残っている場合はここで処理を終える 76 if (0 < HP1) return; 77 78 // 敵を削除する 79 Destroy(gameObject); 80 Instantiate(ExplosionEffect, transform.position, transform.rotation); 81 // 爆発した時の SE を再生する 82 var audioSource2 = FindObjectOfType<AudioSource>(); 83 audioSource2.PlayOneShot(explosionClip); 84 85 86 } 87 } 88} 89

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問