Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ プレイヤーアニメーションの完成 | Unityアニメーションシステム
Unityでの格闘ゲーム

bookプレイヤーアニメーションの完成

メニューを表示するにはスワイプしてください

ジャンプアニメーション

ジャンプには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に更新されます。

question mark

Unityにおいてraycastは何を表しますか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  6

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  6
some-alt