前提・実現したいこと
中学生です。unity で初めてゲームを作っていますが、うまくいきません。
敵のクローンを作って物体にそれぞれ変数HPを設定し、それがプレイヤーオブジェクトのサークルコライダー2D(is trigger)に触れた時、触れた敵のオブジェクトの変数HPを取得したいのですが、どうすればいいのでしょうか。
発生している問題・エラーメッセージ
car_Generatorスクリプトで、publicにしたcarDeathtroyというスクリプトから、public int jjjという変数を取得しようとしています。
InspectorでcarDeathtroyスクリプトは、car_Generatorスクリプトを貼っているオブジェクトに貼っています。
public class car_Generator : MonoBehaviour
{
int strin_car;
public carDeathtroy carDeathtroy;
void a()
{
strin_car = carDeathtroy.jjj;
}
}
carDeathtroyスクリプトを貼っているオブジェクトは、プレハブ化しておりInstantiateでクローンにしています。
しかし、strin_car = carDeathtroy.jjjの文がうまく働いておらず、毎回0の値が帰ってきてしまいます。
該当のソースコード
C#
ソースコード
### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
コードを提示しましょう
遅くなりましたが、コードを提示してみました。よろしくお願いします。
carDeathtroyスクリプトのコードも記載してください。
public int jjj;
関係がありそうなのは、この文だけです。
重ね重ね失礼しますが、Instantiateでクローンしている箇所や、「car_Generator.carDeathtroy」と「carDeathtroy.jjj」に代入している箇所も記載してください。
すみません、代入ってなんですか?
数値やオブジェクトを、変数に入れる、という意味です。
go = Instantiate(car1) as GameObject;
go.transform.position = new Vector3(0, 0, 0);
の文で、プレハブ化したオブジェクトcar1をクローンとして作成し、
場所を決めています。
public class car_Generator : MonoBehaviour
{
int strin_car;
public carDeathtroy carDeathtroy;
GameObject go;
public GameObject car1;
void Start()
{
go = Instantiate(car1) as GameObject;
go.transform.position = new Vector3(0, 0, 0);
}
void a()
{
strin_car = carDeathtroy.jjj;
}
}
何かが間違っていたらご指摘お願いします。
car_Generator.carDeathtroyの初期化や代入している箇所が見つかりませんが、どのようになっていますか?
すみません、初期化ってなんですか?
今のところ代入は前回挙げたところのみですが、それ以外何か必要なのでしょうか?
> 初期化ってなんですか?
宣言と同時に代入することです。
> 今のところ代入は前回挙げたところのみですが、それ以外何か必要なのでしょうか?
もし、それが本当なのであれば、「car_Generator.carDeathtroy」は空(null)なので、「carDeathtroy.jjj(正確にはcar_Generator.carDeathtroy.jjj)」を取得するのは不可能です。
なので、どこかで「car_Generator.carDeathtroy」に代入していないと正しく動作しません。
「car_Generator.carDeathtroy」はpublicなので、インスペクターから設定することも可能ですが、そもそも取得したいのは「スクリプト上でInstantiateでクローンしたもの」であり、それだとInstantiate後にスクリプト上で設定(代入)することになります。
このことから、「car_Generator.carDeathtroy」と「Instantiateでクローンしたもの(この場合「car_Generator.go」)」のゲームオブジェクトが同じではないのが原因だと思いますが、どうでしょう?
特に「car_Generator.carDeathtroy」にインスペクター上からプレハブを設定していてもおかしくないような気がしますが、そうなっていませんか?
回答1件
あなたの回答
tips
プレビュー