質問するログイン新規登録

回答編集履歴

1

ダメージによるアニメーション無効化を追記

2018/12/30 04:55

投稿

Bongo
Bongo

スコア10816

answer CHANGED
@@ -27,4 +27,48 @@
27
27
  ![アニメーション](4b0b91aa2506da3af7092ccfc6aa498c.png)
28
28
 
29
29
  下図のような動きにできないでしょうか。
30
- ![結果](a34da9324a1ab27b3f5fbb987b0bf699.gif)
30
+ ![結果](a34da9324a1ab27b3f5fbb987b0bf699.gif)
31
+
32
+ #追記
33
+ 求められているのは、アニメーション終了時ではなくダメージ蓄積によるアニメーション無効化でしたね...
34
+ タイトルに記載いただいたのに失念してしまいました。すみません...
35
+
36
+ アニメーション中での任意の位置でアニメーションが無効化されうるなら、アニメーションイベントを使う必要はなさそうですね。単純に下記のような形でどうでしょう。
37
+
38
+ ```C#
39
+ using UnityEngine;
40
+
41
+ public class Bar : MonoBehaviour
42
+ {
43
+ public int Health = 10;
44
+ public int MaximumHealth = 10;
45
+
46
+ private void OnCollisionEnter(Collision collision)
47
+ {
48
+ this.Damage(1);
49
+ }
50
+
51
+ public void Damage(int value)
52
+ {
53
+ this.Health = Mathf.Clamp(this.Health - value, 0, this.MaximumHealth);
54
+
55
+ // ダメージ表現
56
+ var ratio = (float)this.Health / this.MaximumHealth;
57
+ this.GetComponent<Renderer>().material.color = new Color(1.0f, ratio, ratio);
58
+
59
+ if (this.Health > 0)
60
+ {
61
+ return;
62
+ }
63
+
64
+ var animator = this.GetComponent<Animator>();
65
+ if (animator == null)
66
+ {
67
+ return;
68
+ }
69
+
70
+ animator.enabled = false;
71
+ }
72
+ }
73
+ ```
74
+ ![結果](d3183448a4a4f4635a7f6153497c7b72.gif)