回答編集履歴

1

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

2018/12/30 04:55

投稿

Bongo
Bongo

スコア10807

test CHANGED
@@ -57,3 +57,91 @@
57
57
  下図のような動きにできないでしょうか。
58
58
 
59
59
  ![結果](a34da9324a1ab27b3f5fbb987b0bf699.gif)
60
+
61
+
62
+
63
+ #追記
64
+
65
+ 求められているのは、アニメーション終了時ではなくダメージ蓄積によるアニメーション無効化でしたね...
66
+
67
+ タイトルに記載いただいたのに失念してしまいました。すみません...
68
+
69
+
70
+
71
+ アニメーション中での任意の位置でアニメーションが無効化されうるなら、アニメーションイベントを使う必要はなさそうですね。単純に下記のような形でどうでしょう。
72
+
73
+
74
+
75
+ ```C#
76
+
77
+ using UnityEngine;
78
+
79
+
80
+
81
+ public class Bar : MonoBehaviour
82
+
83
+ {
84
+
85
+ public int Health = 10;
86
+
87
+ public int MaximumHealth = 10;
88
+
89
+
90
+
91
+ private void OnCollisionEnter(Collision collision)
92
+
93
+ {
94
+
95
+ this.Damage(1);
96
+
97
+ }
98
+
99
+
100
+
101
+ public void Damage(int value)
102
+
103
+ {
104
+
105
+ this.Health = Mathf.Clamp(this.Health - value, 0, this.MaximumHealth);
106
+
107
+
108
+
109
+ // ダメージ表現
110
+
111
+ var ratio = (float)this.Health / this.MaximumHealth;
112
+
113
+ this.GetComponent<Renderer>().material.color = new Color(1.0f, ratio, ratio);
114
+
115
+
116
+
117
+ if (this.Health > 0)
118
+
119
+ {
120
+
121
+ return;
122
+
123
+ }
124
+
125
+
126
+
127
+ var animator = this.GetComponent<Animator>();
128
+
129
+ if (animator == null)
130
+
131
+ {
132
+
133
+ return;
134
+
135
+ }
136
+
137
+
138
+
139
+ animator.enabled = false;
140
+
141
+ }
142
+
143
+ }
144
+
145
+ ```
146
+
147
+ ![結果](d3183448a4a4f4635a7f6153497c7b72.gif)