実現したいこと
同じオブジェクトの他スクリプトの変数を取得したい。
前提
C#、Unity歴2ヶ月未満。初心者。
Unityを使い、C#を使用しています。同じオブジェクトの他スクリプトの変数を取得したいのですがうまくいきません。
発生している問題・エラーメッセージ
”Beam"というタグが衝突するごとにHpが-1されていくメソッドを使用し、Hpを更新しています。他スクリプトからHp変数を取得しているのですがOncollisionEnter()メソッド内で更新している値を返さないと意味がないということでしょうか?自分は変数の初期値を取得しているということなのでしょうか?
エラーメッセージは特にないです。
該当のソースコード
C#
1コード 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5using UnityEngine.UI; 6 7public class PlayerHitpoint : MonoBehaviour 8{ 9 10 int maxHp = 10; 11 public int Hp; 12 13 public Slider slider; 14 // Start is called before the first frame update 15 void Start() 16 { 17 slider.value = 1; 18 Hp = maxHp; 19 } 20 21 // Update is called once per frame 22 void Update() 23 { 24 25 } 26 27 void OnCollisionEnter(Collision collision) 28 { 29 if(collision.gameObject.tag == "Beam") 30 { 31 Hp = Hp - 1; 32 slider.value = (float)Hp / (float)maxHp; 33 34 } 35 } 36} 37 38 39C# 40ソースコード 41using System.Collections; 42using System.Collections.Generic; 43using UnityEngine; 44using UnityEngine.UI; 45 46public class GameOver : MonoBehaviour 47{ 48 public Text gameOverMessage; 49 PlayerHitpoint HitPoint; 50 float PlayerHp; 51 52 53 // Start is called before the first frame update 54 void Start() 55 { 56 PlayerHitpoint HitPoint = GetComponent<PlayerHitpoint>(); 57 float PlayerHp = HitPoint.Hp; 58 } 59 60 // Update is called once per frame 61 void Update() 62 { 63 if(PlayerHp < -0.1) 64 { 65 gameOverMessage.text = "Game Over"; 66 Time.timeScale = 0f; 67 } 68 } 69 70 71} 72 73 74### 試したこと 75PlayerHitpointクラスのOncollisionEnter()メソッド内でreturn HpとしましたがVoidで宣言しているためできずです。更新している値をreturnで返すという考え方は正解なのでしょうか。 76

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。