前提・実現したいこと
prefabを使ったコンボ攻撃を実現したい
キャラ本体から離れたところから手(出てくる手をprefabにしました)が出てきてパンチするというものです
3コンボを考えていているが、ボタンを押すと3つ同時に表れてしまう
攻撃する本体にpunchnumという変数を持たせて、ボタンを押すごとに+1し、
punchnum%3で場合分けしてコンボ攻撃ができるか試してみましたがうまいこと行きませんでした
普通のパンチキックコンボみたいに、本体のアニメーション遷移でコンボしたいわけではないのでstatemachinebehaviourをはっつけてどうこうではないかなと思い、上の手段を取りました
発生している問題・エラーメッセージ
ひとつずつ表示したい
該当のソースコード
C#
1//追加1個目 2public class playermanager : MonoBehaviour 3{ 4 public static int punchnum; 5 public void setpunchnum() 6 { playermanager.punchnum += 1;} 7 8 public int getpunchnum() 9 { return playermanager.punchnum ; } 10 11 public void resetpunchnum() 12 {playermanager.punchnum = 0;} 13 14 Update() 15 {Punch();} //エラー 16 17 void Punch() 18 { 19 if (Input.GetKeyDown(KeyCode.Space)) 20 { 21 playermanager playermanager = new playermanager(); 22 punch1 punch1 = GetComponent<punch1>(); //普通にインスタンス化したらnullが出たので何となくこうしました 23 punch2 punch2 = GetComponent<punch2>(); 24 punch3 punch3 = GetComponent<punch3>(); 25 26 animator.SetTrigger("attack"); 27 UnityEngine.Debug.Log(playermanager.getpunchnum()); 28 switch (playermanager.getpunchnum()) 29 { 30 31 case 0: 32 punch1.Punch(); 33 break; 34 case 1: 35 punch2.Punch(); 36 break; 37 case 2: 38 punch3.Punch(); 39 break; 40 } 41 playermanager.setpunchnum(); 42 if (playermanager.getpunchnum() >= 3) playermanager.resetpunchnum(); 43 } 44 } 45}
C#
1//追加2個目 2//punch2とpunch3もあります 3public class punch1 : MonoBehaviour 4{ 5 public Transform punchtyu; 6 public GameObject punchtyufab; 7 public Transform appearpoint; 8 public GameObject appearpointprefab; 9 10 public void Punch() 11 { 12 Instantiate(punchtyufab, punchtyu.position, transform.rotation); 13 Instantiate(appearpointprefab, appearpoint.position, transform.rotation); 14 } 15} 16
C#
1//こちらはいったん忘れていただいて 2//Punch1()と同じように2,3もあります 3void Punch() 4 { 5 playermanager playermanager = new playermanager(); { 6 if (Input.GetKeyDown(KeyCode.Space)){ 7 if (playermanager.punchnum % 3 != 0) { //Punchの種類によって !=0,1,2で場合分け 8 UnityEngine.Debug.Log("1 another"); 9 } 10 else{ 11 UnityEngine.Debug.Log("punch1"); 12 UnityEngine.Debug.Log(playermanager.punchnum); 13 //animation 切り替える 14 animator.SetTrigger("attack"); 15 Instantiate(punchtyufab, punchtyu.position, transform.rotation); 16 Instantiate(appearpointprefab, appearpoint.position, transform.rotation); 17 playermanager.setpunchnum(); 18 UnityEngine.Debug.Log(playermanager.punchnum); 19 } 20 } 21 }
試したこと
デバッグは3回目のボタン以降punch~ も anotherも出ず数字しか出てこなくなります
1回目のボタンでpunch1とpunch2が表れて
another3
punch1
0
1
punch2
1
2
2回目のボタンでpunch1,2,3すべて表れて
punch3
2
3
3
4
4
5
補足情報(FW/ツールのバージョンなど)
ここによ
回答1件
あなたの回答
tips
プレビュー