前提・実現したいこと
100HPから当たった部位に応じてダメージを負うってのをしたいのですが以下のエラーが発生して困ってます
発生している問題・エラーメッセージ
DestroyObject.cs(10,13): error CS0246: The type or namespace name 'HP' could not be found (are you missing a using directive or an assembly reference?)
多分ですが、型が違うってのを教えてくれてるっぽいのですが、初心者ってのもありなんの型か分かりません
該当のソースコード
using System.Collections; using System.Collections.Generic; using UnityEngine; public class DestroyObject : MonoBehaviour { public int damage; //当たった部位毎のダメージ量 private GameObject Cube; //敵オブジェクト private HP hp; //HPクラス void Start() { Enemy = GameObject.Find("Enemy"); //敵情報を取得 hp = Cube.GetComponent<HP>(); //HP情報を取得 } void OnTriggerEnter(Collider other) { //ぶつかったオブジェクトのTagにShellという名前が書いてあったならば(条件). if (other.CompareTag("Shell")) { //HPクラスのDamage関数を呼び出す hp.Damage(damage); //ぶつかってきたオブジェクトを破壊する. Destroy(other.gameObject); } } }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
似たような質問がありましたので補足です
こちらは「ランダムにオブジェクトが消えてしまう。」のではなく、ダメージを負うことをしたいです
> 多分ですが、型が違うってのを教えてくれてるっぽいのですが、初心者ってのもありなんの型か分かりません
違います。型・名前空間が見つからないというエラーです。要は、使おうとしたHPクラスが、どこにも定義されていないということです。
多分ではなく、きちんと翻訳して確認しましょう。翻訳サイトを使えばそれほど難しくない筈なので、メッセージを読むという部分は初心者は関係ないです。error CS0246 も、ググったらすぐ出てきます。
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/compiler-messages/cs0246
タグ「Unity」はつけられたほうが良いのでは。
"Enemy"という変数はどこで宣言しているのでしょうか。
また、"Cube"オブジェクトはどのように取得しているのでしょうか。
「【Unity】FPSで弾を発射し、あたり判定を検知する方法 – XR-Hub」(https://xr-hub.com/archives/7782#i-2 )の記事中に「「Enemy」にHPをつける」という節がありますが、ご質問者さんの場合はHPスクリプトをどのように作成されたでしょうか?
こちらのスクリプトの内容もご提示いただけると手がかりになるかもしれません。
あなたの回答
tips
プレビュー