前提・実現したいこと
ボードゲームで、カウントダウンが終わったら(Turn)を呼び出し、WASDを入力したら駒の座標を変えつつカメラを180度回転させるというスクリプトを書いています。tの動き方としては、自分のターンの時は偶数、相手のターンの時は奇数になるように作ろうとしています、
発生している問題・エラーメッセージ
public int t で 外から変数tの中身を見ているのですが、W,A.S.Dを押しているのにもかかわらず、値が増えない、値が変わった時は1づつ増えるのではなく3か4づつ増える、ということが起きています、特にエラーは出ていません
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class Countdown : MonoBehaviour { 7 8 9 public int t = 0; 10 11 public Text text; 12 public int Gamestart = 1; 13 14 Transform A; 15 Transform B; 16 int a = 3; 17 18 // Start is called before the first frame update 19 void Start() { 20 21 var rotate = GetComponent<Rotate>(); 22 rotate.enabled = false; 23 24 Invoke("Countstart", 0.5f); 25 Invoke("Countstart", 1.5f); 26 Invoke("Countstart", 2.5f); 27 Invoke("Countstart", 3.5f); 28 Invoke("Countstart", 4.5f); 29 30 } 31 32 // Update is called once per frame 33 void Countstart() { 34 35 if (a == 3) { 36 text.text = "3"; 37 38 } 39 if (a == 2) { 40 text.text = "2"; 41 42 } 43 if (a == 1) { 44 45 text.text = "1"; 46 } 47 if (a == 0) { 48 text.text = "START"; 49 50 GameObject obj = GameObject.Find("startblock"); 51 Destroy(obj); 52 } 53 if (a == -1) { 54 text.text = ""; 55 56 57 58 Gamestart++; 59 } 60 a--; 61 62 63 64 65 } 66 private void Update() { 67 68 Invoke("Turn", 4.5f); 69 } 70 public void Turn() { 71 Quaternion quaternion = this.transform.rotation; 72 float y = quaternion.eulerAngles.y; 73 A = GameObject.Find("Acube").transform; 74 B = GameObject.Find("Bcube").transform; 75 Vector3 posA = A.position; 76 Vector3 posB = B.position; 77 78 79 if (t % 2 == 0) { 80 if (Input.GetKeyDown(KeyCode.W)) { 81 ++t ; 82 posB.z = posB.z++; 83 StartCoroutine(Rotation()); 84 Debug.Log("成功"); 85 86 } 87 if (Input.GetKeyDown(KeyCode.A)) { 88 t++; 89 posB.x = posB.x--; 90 StartCoroutine(Rotation()); 91 92 93 94 } 95 if (Input.GetKeyDown(KeyCode.S)) { 96 t++; 97 posB.z = posB.z--; 98 StartCoroutine(Rotation()); 99 100 101 } 102 if (Input.GetKeyDown(KeyCode.D)) { 103 t++; 104 posB.x = posB.x++; 105 StartCoroutine(Rotation()); 106 107 108 109 } 110 } else { 111 if (Input.GetKeyDown(KeyCode.W)) { 112 t++; 113 posA.z = posA.z--; 114 StartCoroutine(Rotation()); 115 116 117 } 118 if (Input.GetKeyDown(KeyCode.A)) { 119 t++; 120 posA.x = posA.x--; 121 StartCoroutine(Rotation()); 122 } 123 124 if (Input.GetKeyDown(KeyCode.S)) { 125 t++; 126 posA.z = posA.z++; 127 StartCoroutine(Rotation()); 128 129 130 } 131 if (Input.GetKeyDown(KeyCode.D)) { 132 t++; 133 posA.x = posA.x++; 134 StartCoroutine(Rotation()); 135 136 137 138 139 } 140 141 142 143 144 145 } 146 IEnumerator Rotation() { 147 for (var o = 0; o < 60; o++) { 148 yield return null; 149 } 150 151 var rotate = GetComponent<Rotate>(); 152 rotate.enabled = true; 153 154 for (var i = 0; i < 540; i++) { 155 yield return null; 156 } 157 rotate.enabled = false; 158 159 160 161 162 163 164 } 165 166 167 168 169 } 170}
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Rotate : MonoBehaviour 6{ 7 int x; 8 // Start is called before the first frame update 9 void Start() 10 { 11 12 13 14 } 15 16 // Update is called once per frame 17 void Update() 18 { 19 20 transform.Rotate(new Vector3(0, 1/3f, 0)); 21 22 } 23} 24
試したこと
インターネットで調べてみましたが、同じような現象について書いてあるサイトは見つかりませんでした、間違えてこのスクリプトを何個かにつけているのではないかと思い、座標を表示してみましたが、そのようなことはなかったです、
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/28 01:54
2021/07/28 11:16