#現状
Unityバージョン2020.1.15とVscodeにて2Dのゲームを作成中ですが問題が起きました。
キャラクターが敵の攻撃を受けるとHPが減るという処理を作ったのですがUpdate内の"Debug.Log"と関数内の"Debug.Log"で違う値が出てしまいます。
#NPCのスクリプト
using System.Collections; using System.Collections.Generic; using UnityEngine; public class paraN : MonoBehaviour { //HP private float hpM; private float hpC; // Start is called before the first frame update void Start() { hpM = 100; hpC = hpM; } // Update is called once per frame void Update() { Debug.Log (hpC); } //ダメージ public void damA() { hpC -= 10; Debug.Log (hpC); } }
NPCが敵の攻撃に当たるたびに"damA()"が呼び出されます。
しかし、コンソール画面では「①hpC = 100」と「②10ずつ引かれているhpC(例:-90,-80,-70...)」の二つが表示されてしまいます。
さらに不可解なのがゲームの再生をストップし、再スタートしたとしても②の値がリセットされないことです(例:-90,-80,-70 ここで一度ゲームの再生を終了、そして再スタートさせる→-60,-50,-40となり-90からじゃない)
ちなみにUnity自体を再起動させると②はまた-90から始まるのですが、再起動後の初めの一回のみでゲームを再スタートさせると-60,-50,-40となり、果ては-2010,-2020,-2030というコンソール画面になってしまいます。
#敵の攻撃のスクリプト
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Zspell : MonoBehaviour { [SerializeField] GameObject npc; paraN nsc; // Start is called before the first frame update void Start() { nsc = npc.GetComponent<paraN>(); } // Update is called once per frame void Update() { } //アニメーション後破壊 private void Des() { Destroy (this.gameObject); } private void OnTriggerExit2D(Collider2D other) { if (other.tag == "npc") { nsc.damA(); } } }
#実現したいこと
Update内のDebug.Logでの値が攻撃を喰らうたび-90,-80,-70と表示され、かつゲームが再スタートされるとまた-90,-80,-70とhpCがリセットされるようにしたいです。
このような現象は今までに遭遇したことはなく、調べてみても同じような例はなかったため投稿させていただきました。
返答のほどよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/12 03:49