###実現したいこと 困っている事
プレイヤーが落下する時にモーションを付けらなくて困ってます。
2Dキャラクターをジャンプした後、落下モーションを導入したいです。
ご回答宜しくお願い致します。
###試した事
Vectorを使って差分を計算しましたが上手くいかなかったです。
該当のソースコード
Unity C#
PlayerController.cs
※ソースコードはプロジェクト内に一つだけです。
html
1public class PlayerController : MonoBehaviour 2{ 3 Rigidbody2D rbody; 4 public float jumpSpeed; 5 bool jump = false; //ジャンプフラグ 6 7 public bool walkforward = false; //前方に歩く 8 public float walkspeed; //進む速度 9 10 Animator animator; 11 public string runAnime = "PlayerRun"; 12 public string jumpAnime = "PlayerJump"; 13 string nowAnime = ""; 14 string oldAnime = ""; 15 16 17 18 // Start is called before the first frame update 19 void Start() 20 { 21 rbody = GetComponent<Rigidbody2D>(); 22 animator = GetComponent<Animator>(); 23 nowAnime = runAnime; 24 oldAnime = runAnime; 25 } 26 27 // Update is called once per frame 28 void Update() 29 { 30 if(Input.GetKeyDown("space") && !jump) 31 { 32 rbody.AddForce(Vector2.up * jumpSpeed); 33 jump = true; 34 Debug.Log("ジャンプ作動"); 35 } 36 if(walkforward) // X軸に進む 37 { 38 this.gameObject.transform.Translate(walkspeed, 0, 0); 39 } 40 41 } 42 43 void FixedUpdate() 44 { 45 if(walkforward) 46 { 47 if(jump == false) //移動アニメーション 48 { 49 nowAnime = runAnime; 50 } 51 else if(jump == true) //ジャンプアニメーション 52 { 53 nowAnime = jumpAnime; 54 } 55 56 } 57 if (nowAnime != oldAnime) 58 { 59 oldAnime = nowAnime; 60 animator.Play(nowAnime); 61 } 62 } 63 64 void OnCollisionEnter2D(Collision2D othe) 65 { 66 if(othe.gameObject.CompareTag("Ground")) 67 { 68 jump = false; 69 } 70 } 71}
補足情報(FW/ツールのバージョンなど)
コードが乱雑だとは思いますが是非ご回答お願い致します。
あなたの回答
tips
プレビュー