回答編集履歴

1

スクリプトを追記

2020/03/29 10:24

投稿

退会済みユーザー
test CHANGED
@@ -11,3 +11,107 @@
11
11
  `anim.GetCurrentAnimatorStateInfo(0).IsName("State名")`
12
12
 
13
13
  がtrueかfalseかで判断できます。
14
+
15
+
16
+
17
+ コルーチンでコンボを繋げるなら例えばこんな感じです。
18
+
19
+ ```c#
20
+
21
+ using System.Collections;
22
+
23
+ using System.Collections.Generic;
24
+
25
+ using UnityEngine;
26
+
27
+
28
+
29
+ public class Teratail : MonoBehaviour
30
+
31
+ {
32
+
33
+ static readonly int NumCombo = 2;//最大コンボ数
34
+
35
+ Animator animator;
36
+
37
+ bool isAttack = false;//攻撃中かどうか
38
+
39
+
40
+
41
+ void Start()
42
+
43
+ {
44
+
45
+ animator = GetComponent<Animator>();
46
+
47
+ }
48
+
49
+
50
+
51
+ void Update()
52
+
53
+ {
54
+
55
+ if (Input.GetKeyDown(KeyCode.Z) && !isAttack)//攻撃中でないときにZキーが押された
56
+
57
+ {
58
+
59
+ StartCoroutine(Combo());//コンボスタート
60
+
61
+ }
62
+
63
+ }
64
+
65
+
66
+
67
+ IEnumerator Combo()
68
+
69
+ {
70
+
71
+ isAttack = true;
72
+
73
+
74
+
75
+ bool nextCombo = true;//コンボが繋がるかどうか
76
+
77
+ for (int i = 1; nextCombo && i <= NumCombo; i++)
78
+
79
+ {
80
+
81
+ nextCombo = false;
82
+
83
+ animator.SetTrigger("NextCombo");//i番目のコンボ開始
84
+
85
+ yield return new WaitForSeconds(0.1f);
86
+
87
+ while (animator.GetCurrentAnimatorStateInfo(0).normalizedTime < 1f)//コンボiの間
88
+
89
+ {
90
+
91
+ if (Input.GetKeyDown(KeyCode.Z)) nextCombo = true;//キーが押されたらコンボが繋がる
92
+
93
+ yield return null;
94
+
95
+ }
96
+
97
+ yield return new WaitForSeconds(0.3f);//次の攻撃は0.3秒後
98
+
99
+ }
100
+
101
+
102
+
103
+ animator.SetTrigger("EndCombo");
104
+
105
+ isAttack = false;
106
+
107
+ }
108
+
109
+ }
110
+
111
+ ```
112
+
113
+
114
+
115
+ アニメーターはこうなります。
116
+
117
+ ![イメージ説明](bdf647ee41586b6192c4a35c83b6f3d3.png)