【Unity】一人称視点で近接攻撃

投稿者: | 2020-07-03

前の記事と同様にプレイヤーも敵を近接攻撃できるようにしてみました。敵のHPゲージも作って攻撃が当たると減らします。

// プレイヤーにつけたスクリプト
// 刀で攻撃中
else if (animator.GetCurrentAnimatorStateInfo(0).IsName("KnifeAttack"))
{

    if (!judged && animator.GetCurrentAnimatorStateInfo(0).normalizedTime > 0.4f)
    {

        judged = true;
        // 攻撃があたった時
        Vector3 enemyPos = enemy.transform.position;
        enemyPos.y = transform.position.y;
        if (Vector3.Distance(enemyPos, transform.position) <= 2f && Vector3.Dot(Vector3.Normalize(enemyPos - transform.position), transform.forward) >= 0.8f)
        {
            sc_agent.SetHP(-0.1f);
            audioSource.clip = audios[0];
            audioSource.Play();

        }
        // 攻撃があたらなかった時
        else
        {
            audioSource.clip = audios[2];
            audioSource.Play();
        }
    }
}
// 刀を構えているとき
else if (animator.GetCurrentAnimatorStateInfo(0).IsName("KnifeStay"))
{
    judged = false;

}

// 敵につけたスクリプト
[SerializeField] Image HpImage;
float HP = 1f;

public void SetHP(float f)
{
    HP += f;
    HP = Mathf.Clamp(HP,0f,1f);
    HpImage.fillAmount = HP;
}

敵のHPゲージはプレイヤーと逆向きに減るので、ImageコンポーネントのFill OriginをRightにしておきます。

攻撃が当たったかどうかを距離と角度一つで判断しているので、境界が敵のシルエットに合っていません。

コメントを残す

メールアドレスが公開されることはありません。