プレイヤーアニメーションの完成
メニューを表示するにはスワイプしてください
ジャンプアニメーション
ジャンプには2つのアニメーションを用意します。プレイヤーがジャンプしてから落下するため、それぞれのアニメーションが必要です。これらの切り替えはプレイヤーの「y速度」に基づいて行われます。yが正の場合はジャンプ中、yが負の場合は落下中となります。プレイヤーにアタッチされたRigidbody2Dコンポーネントからy速度を取得できます。
animator.SetFloat("JumpingForce", rb.velocity.y);
このコードは、ジャンプと落下の間の遷移パラメータに値を代入します。
コード解説
if (Input.GetKeyDown(KeyCode.Space) && isGrounded && animator.GetBool("isAttacking") == false)
{
rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
animator.SetBool("isJumping", true);
}
if (animator.GetBool("isJumping") == true && rb.velocity.y < 0 && isGrounded)
{
animator.SetBool("isJumping", false);
}
animator.SetFloat("JumpingForce", rb.velocity.y);
isGrounded = Physics2D.Raycast(playerFeet.position, Vector2.down, 0.1f, groundLayer);
if (Input.GetKeyDown(KeyCode.Space) && isGrounded && animator.GetBool("isAttacking") == false)
{
// Code to execute when the conditions are met
}
この行は、スペースキーが押されたか(Input.GetKeyDown(KeyCode.Space))、プレイヤーが地面にいるか(isGrounded)、現在攻撃していないか(animator.GetBool("isAttacking") == false)を確認します。すべての条件が満たされた場合、次のコードブロックが実行されます。
rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
この行は、プレイヤーにアタッチされたRigidbody(rb)コンポーネントに上方向の力を加え、ジャンプをシミュレートします。加えられる力は上方向(Vector2.up)で、強さはjumpForceで定義されており、インパルスモード(ForceMode2D.Impulse)で適用されます。
animator.SetBool("isJumping", true);
この行は、Animatorコンポーネント内のブールパラメータ**「isJumping」**をtrueに設定し、ジャンプアニメーションをトリガーします。
if (animator.GetBool("isJumping") == true && rb.velocity.y < 0 && isGrounded)
{
// Code to execute when the conditions are met
}
この行は、プレイヤーが現在ジャンプ中であるか(animator.GetBool("isJumping") == true)、プレイヤーの垂直速度が負であるか(rb.velocity.y < 0)、およびプレイヤーが地面にいるか(isGrounded)を確認します。すべての条件が満たされた場合、次のコードブロックが実行されます。
animator.SetBool("isJumping", false);
この行は、Animatorコンポーネント内のブールパラメータ**"isJumping"**をfalseに設定し、プレイヤーがジャンプおよび落下を終了し、アニメーションがアイドル状態に切り替わることを示します。
isGrounded = Physics2D.Raycast(playerFeet.position, Vector2.down, 0.1f, groundLayer);
この行は、プレイヤーの足元の位置(playerFeet.position)から下方向にレイを発射し、プレイヤーが地面に接しているかどうかを検出します。レイが0.1ユニット以内でground layer内の任意のコライダーと交差した場合、isGrounded変数がtrueに更新されます。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください