前提・実現したいこと
fillAmountを使ってダメージに対応してHPゲージが減少するようにしたいです。
発生している問題・エラーメッセージ
与えられたダメージの量に関係なく最初の攻撃でHPゲージがすべてなくなってしまいます。
該当のソースコード
C#
1IEnumerator Start() 2 { 3 lifeGage1.fillAmount = attacker.life / attacker.lifeMax; 4 lifeGage2.fillAmount = defender.life / defender.lifeMax; 5 6 // 攻撃側・防衛側の画像を反映 7 var unitImage1 = attacker.GetComponent<Image>(); 8 attackerImages.sprite = unitImage1.sprite; 9 attackerImages.color = unitImage1.color; 10 11 12 var unitImage2 = defender.GetComponent<Image>(); 13 defenderImages.sprite = unitImage2.sprite; 14 defenderImages.color = unitImage2.color; 15 16 yield return new WaitForSeconds(0.5f); 17 18 // 攻撃アニメーション 19 20 attackerImages.transform.DOLocalMoveX(attackerImages.transform.localPosition.x + 30f, 0.2f) 21 .SetLoops(2, LoopType.Yoyo); 22 yield return new WaitForSeconds(0.2f); 23 24 // 防衛側がダメージを受ける 25 defender.Damage(attacker,defender); 26 27 lifeGage1.fillAmount = attacker.life / attacker.lifeMax; 28 lifeGage2.fillAmount = defender.life / defender.lifeMax; 29 30 yield return new WaitForSeconds(1f); 31 32 // 反撃可能な距離かつHPが0でなければ、防衛側の反撃 33 var distance = Mathf.Abs(attacker.x - defender.x) + Mathf.Abs(attacker.y - defender.y); 34 if (defender.attackRangeMin <= distance && distance <= defender.attackRangeMax && defender.life != 0) 35 { 36 37 defenderImages.transform.DOLocalMoveX(defenderImages.transform.localPosition.x - 30f, 0.2f) 38 .SetLoops(2, LoopType.Yoyo); 39 40 41 42 yield return new WaitForSeconds(0.2f); 43 44 attacker.Damage(defender, attacker); 45 46 lifeGage1.fillAmount = attacker.life / attacker.lifeMax; 47 lifeGage2.fillAmount = defender.life / defender.lifeMax; 48 }
試したこと
実際にゲームを動かしてみてHPゲージがなくなった後も攻撃を続けるとユニットが倒れるため内部のHPはちゃんと数値通り減少していると考えられます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/08 11:53