敵に攻撃を当てた際の効果音について

質問です。エネミー(敵)に攻撃を当てた時にだけ効果音が鳴るようにしたいのですが、エラーでうまく反映されません。
どなたかおしえてくれないでしょうか?
以下ソースコードになります。

using UnityEngine;
using UnityEngine.UI;

public class EnemyBase : MonoBehaviour
{
public GameObject Player { private get; set; }
public GameObject Manager { private get; set; }
public bool bDown { get; private set; } = false;

Rigidbody rb; [SerializeField] EnemyParam enemyParam; [SerializeField] Material DownMat; int nNowHP; // 現在HP float fFlyAttack; // 飛ばされた時の攻撃力 float fFlyPower; // [Header("吹き飛ばされる力")] [SerializeField] float fBurst = 30.0f; Vector3 oldPos; float fDeathCnt = 10.0f; // 死亡時間(仮 Slider slider; public AudioClip Cut; AudioSource audioSource; //---------------------------------- // 初期化 //---------------------------------- void Start() { //slider = GetComponentInChildren<Slider>(); rb = GetComponent<Rigidbody>(); nNowHP = enemyParam.MaxHP; rb.mass = enemyParam.Weight; audioSource = GetComponent<AudioSource>(); } //---------------------------------- // 更新 //---------------------------------- void Update() { // ダウン処理 EnemyDown(); // 移動 //if(!bDown) // transform.position += (Player.transform.position - transform.position) * enemyParam.fSpeed * 0.1f * Time.deltaTime; //slider.value = (float)nNowHP / enemyParam.MaxHP; } //---------------------------------- // 更新 //---------------------------------- private void FixedUpdate() { // パワー減衰 if (bDown && fFlyPower > 0.0f) { fFlyPower--; // 吹っ飛び攻撃力(吹き飛び力×体重) fFlyAttack = fFlyPower * enemyParam.Weight; // 補正 if (fFlyAttack < 0.0f) fFlyAttack = 0.0f; } } //---------------------------------- // 敵ダウン処理 //---------------------------------- private void EnemyDown() { // 体力0以下 if (nNowHP <= 0 && !bDown) { bDown = true; gameObject.GetComponent<MeshRenderer>().material = DownMat; // ダウンマテリアルセット //Destroy(gameObject, 10.0f); } // ダウン時処理 if (bDown) { rb.mass = 100; //fDeathCnt -= Time.deltaTime; //if (fDeathCnt < 0.0f) //{ // Manager.GetComponent<EnemyManager>().NowEnemyList.Remove(gameObject); // リストから削除 // Destroy(gameObject); //} } else { audioSource.PlayOneShot(Cut); } } //---------------------------------- // 当たり判定(Trigger) //---------------------------------- private void OnTriggerEnter(Collider col) { // 剣との当たり判定時 if (col.CompareTag("Sword")) { // ダウン時 if (bDown) { // プレイヤーの溜めた力を取得 fFlyPower = Player.GetComponent<PlayerAttack>().fChargePower; // 力に応じて吹き飛ばし rb.AddForce(col.transform.root.forward * fFlyPower * fBurst, ForceMode.Acceleration); } else { // TODO:プレイヤーからの攻撃力が入る nNowHP -= 30; } } } //---------------------------------- // 当たり判定(Colision) //---------------------------------- private void OnCollisionEnter(Collision collision) { // 敵との接触時 if (collision.transform.CompareTag("Enemy")) { // 接触した敵がダウン中なら if (collision.gameObject.GetComponent<EnemyBase>().bDown) { var col = collision.gameObject.GetComponent<EnemyBase>(); fFlyAttack = col.fFlyAttack; fFlyPower = col.fFlyPower; // 誘爆ダメージ(接触した敵の吹っ飛ばし値×接触した敵の体重) int damage = (int)fFlyPower * col.enemyParam.Weight; nNowHP -= damage; float rate = 0.0f; // 最大HPに対しての誘爆ダメージで計算 if (damage > 0) { rate = (float)enemyParam.MaxHP / damage; } // 飛ばす方向 * (割合 - 体重) * 吹っ飛ばす値 rb.AddForce(collision.transform.forward * (rate - enemyParam.Weight) * fBurst, ForceMode.Acceleration); } } }

}

コメントを投稿

0 コメント