画像の中央にある柱状のオブジェクトはアニメーションが終了した状態です。左のオブジェクトから弾丸が発射され衝突してもその場から移動しません。
アニメーションを途中で終了し当たり判定を保持したままオブジェクトをフリー(衝突すると飛んでいく状態)にする事は可能なのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
アニメーションが終わったらAnimatorを切ってしまい、アニメーションによる制御を受けないようにするというのはどうでしょうか?
Animatorを無効化するメソッドを持つスクリプトを...
C#
1using UnityEngine; 2 3public class AnimationDisabler : MonoBehaviour 4{ 5 public void DisableAnimation() 6 { 7 var animator = this.GetComponent<Animator>(); 8 if (animator == null) 9 { 10 return; 11 } 12 13 animator.enabled = false; 14 } 15}
Animatorを持つオブジェクトと同じオブジェクトにアタッチし...
アニメーションの末尾にアニメーションイベントを仕込み、無効化メソッドを実行させるようにすると...
#追記
求められているのは、アニメーション終了時ではなくダメージ蓄積によるアニメーション無効化でしたね...
タイトルに記載いただいたのに失念してしまいました。すみません...
アニメーション中での任意の位置でアニメーションが無効化されうるなら、アニメーションイベントを使う必要はなさそうですね。単純に下記のような形でどうでしょう。
C#
1using UnityEngine; 2 3public class Bar : MonoBehaviour 4{ 5 public int Health = 10; 6 public int MaximumHealth = 10; 7 8 private void OnCollisionEnter(Collision collision) 9 { 10 this.Damage(1); 11 } 12 13 public void Damage(int value) 14 { 15 this.Health = Mathf.Clamp(this.Health - value, 0, this.MaximumHealth); 16 17 // ダメージ表現 18 var ratio = (float)this.Health / this.MaximumHealth; 19 this.GetComponent<Renderer>().material.color = new Color(1.0f, ratio, ratio); 20 21 if (this.Health > 0) 22 { 23 return; 24 } 25 26 var animator = this.GetComponent<Animator>(); 27 if (animator == null) 28 { 29 return; 30 } 31 32 animator.enabled = false; 33 } 34}
投稿2018/12/29 23:24
編集2018/12/30 04:55総合スコア10807
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/30 15:37
2018/12/30 16:02
2019/01/01 10:12
2019/01/01 10:27
2019/01/01 23:52
2019/01/02 20:38
2019/01/03 02:49