前提・実現したいこと
こちらのサイトを見ながら現在横スクロールアクションゲームを作っています。
https://dkrevel.com/makegame-beginner/make-2d-aciton-move
こちらに掲載されている"ボタンを押された時速度を与えるように変更したスクリプト"を書いて実装したところ、
動き始めはボタンを押した瞬間から動くのですが、ボタンを離した時僅かに遅れて停止します。
スクリプト内の
if (horizontalKey > 0)
を
if (horizontalKey >= 1)
にしたところ、今度は動き始めはズレてボタンを離した瞬間止まりました。(左移動のプログラムも同様です)
horizontalKeyというのは、一瞬で0と1を切り替えるのではなく
押してるとき0,0.1,0.2,0.3,...,1
離した時1,0.9,0.8,0.7,...,0
みたいに徐々に数値が増減するものなのでしょうか?
また現在
if (horizontalKey > 0)
を丸ごと
if (Input.GetKey("right"))(左移動のプログラムも同様です)
にすることで問題なく動作していますが、このサイトの通りhorizontalKeyを使って
キャラクターをピッタリ動かし、ピッタリ止めるにはどうすればよいでしょうか?
該当のソースコード
C#
1using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 5 public class Player : MonoBehaviour 6 { 7 //インスペクターで設定する 8 public float speed; 9 10 //プライベート変数 11 private Animator anim = null; 12 private Rigidbody2D rb = null; 13 14 void Start() 15 { 16 //コンポーネントのインスタンスを捕まえる 17 anim = GetComponent<Animator>(); 18 rb = GetComponent<Rigidbody2D>(); 19 } 20 21 void Update() 22 { 23 //キー入力されたら行動する 24 float horizontalKey = Input.GetAxis("Horizontal"); 25 float xSpeed = 0.0f; 26 if (horizontalKey > 0) 27 { 28 transform.localScale = new Vector3(1, 1, 1); 29 anim.SetBool("run", true); 30 xSpeed = speed; 31 } 32 else if (horizontalKey < 0) 33 { 34 transform.localScale = new Vector3(-1, 1, 1); 35 anim.SetBool("run", true); 36 xSpeed = -speed; 37 } 38 else 39 { 40 anim.SetBool("run", false); 41 xSpeed = 0.0f; 42 } 43 rb.velocity = new Vector2(xSpeed, rb.velocity.y); 44 } 45}
試したこと
if (horizontalKey > 0)
を丸ごと
if (Input.GetKey("right"))(左移動のプログラムも同様です)
にすることで問題なく動作しています
補足情報(FW/ツールのバージョンなど)
該当サイト
https://dkrevel.com/makegame-beginner/make-2d-aciton-move
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/04 18:19