###前提・実現したいこと
現在UnityでC#を用いて、ゲームを開発しているのですがダメージ処理がうまくいきません。
sendMessageを用いてダメージ処理をしようとするとエラーが表示されます。
原因を調べていると、sendMessageはお勧めしないとあったのですが、他にも方法があるのでしょうか?
sendMessageより良い方法があるのであれば、そちらを使いたいのですが一番はダメージ処理が通るようにしたいです。
###発生している問題・エラーメッセージ
エラーメッセージ SendMessage Damage has no receiver!
###該当のソースコード
C#
1//Shooting.cs 2using UnityEngine; 3using System.Collections; 4 5public class Shooting : MonoBehaviour 6{ 7 8 // bullet prefab 9 public GameObject bullet; 10 // 弾丸発射点 11 public Transform muzzle; 12 // 弾丸の速度 13 float speed = 1000; 14 //攻撃力 15 float attack = 10; 16 17 private RaycastHit hit; 18 19 // Use this for initialization 20 void Start() 21 { 22 23 } 24 25 // Update is called once per frame 26 void Update() 27 { 28 // z キーが押された時 29 if (Input.GetKeyDown(KeyCode.Z)) 30 { 31 // プレファブから砲弾(Shell)オブジェクトを作成し、それをshellという名前の箱に入れる。 32 GameObject shell = (GameObject)Instantiate(bullet, transform.position, Quaternion.identity); 33 34 // Rigidbodyの情報を取得し、それをshellRigidbodyという名前の箱に入れる。 35 Rigidbody shellRigidbody = shell.GetComponent<Rigidbody>(); 36 37 // shellRigidbodyにz軸方向の力を加える。 38 shellRigidbody.AddForce(transform.forward * speed); 39 } 40 41 42 } 43 44 void OnCollisionEnter(Collision collision){ 45 46 print(collision.transform.tag); 47 if (collision.transform.tag == "enemy") 48 { 49 //collision.gameObject.GetComponent<Enemy>().Damage(100); 50 collision.gameObject.SendMessage("Damage", attack); 51 //Destroy(collision.gameObject); 52 } 53 Destroy(gameObject); 54 } 55}
C#
1//enemy_hp.cs 2using UnityEngine; 3using System.Collections; 4 5public class Enemy : MonoBehaviour 6{ 7 8 public float life = 30; //敵の体力 9 10 void Start() 11 { 12 13 } 14 15 void Update() 16 { 17 18 } 19 20 //Damage関数ここを修正していく 21 public void Damage(float damage) 22 { 23 print(life); 24 life -= damage; //体力から差し引く 25 if (life <= 0) 26 { 27 //体力が0以下になった時 28 Dead(); //死亡処理 29 } 30 } 31 32 //死亡処理 33 public void Dead() 34 { 35 Destroy(this.gameObject); //自身を削除 36 } 37}
###試したこと
敵をプレハブ化して、一定時間ごとに出現するようにしたのですが、関係ありませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。