質問編集履歴

1

プレイヤー側のソースやMoveEnemies\(\)を呼び出す関数のソースを記入致しました。

2017/09/08 10:45

投稿

puika
puika

スコア8

test CHANGED
File without changes
test CHANGED
@@ -61,3 +61,83 @@
61
61
  }
62
62
 
63
63
  ```
64
+
65
+
66
+
67
+ ご回答ありがとうございます。プレイヤー側のこの部分に関する一連のソースは次の通りです。
68
+
69
+ なお、暴走するのは十字キーを長押しした時です。どうやらplayerはturnDelay一回分停止したのちturnDelay一回分暴走するという挙動をしているようです。不思議なのはキーを押した最初のターンはしっかり止まってくれることです。
70
+
71
+
72
+
73
+ ```
74
+
75
+ // Playerというスクリプト上のUpdateと呼び出す関数
76
+
77
+ private void Update () {
78
+
79
+
80
+
81
+ if (!playersTurn)
82
+
83
+ playersTurn = gameScript.playersTurn;
84
+
85
+
86
+
87
+ if (!playersTurn)
88
+
89
+ return;
90
+
91
+
92
+
93
+ horizontal = (int)Input.GetAxisRaw ("Horizontal");
94
+
95
+ vertical = (int)Input.GetAxisRaw ("Vertical");
96
+
97
+
98
+
99
+ if (horizontal != 0 || vertical != 0) {
100
+
101
+ AttemptMove (horizontal, vertical, false);
102
+
103
+ }
104
+
105
+ }
106
+
107
+
108
+
109
+ protected override void AttemptMove (int xDir, int yDir, bool isEnemy)
110
+
111
+ {
112
+
113
+ base.AttemptMove (xDir, yDir, isEnemy);
114
+
115
+
116
+
117
+ playersTurn = false;
118
+
119
+ gameScript.ChangePlayersTurn ();
120
+
121
+ //上のMoveEnemies()が属するスクリプトでplayersTurnをfalseにする関数です。
122
+
123
+ }
124
+
125
+
126
+
127
+ // MoveEnemiesを呼び出すのはMoveEnemiesと同じスクリプト上の次の関数です。
128
+
129
+ void Update ()
130
+
131
+ {
132
+
133
+ if (!playersTurn && !enemiesTurn) {
134
+
135
+ StartCoroutine (MoveEnemies ());
136
+
137
+ }
138
+
139
+ }
140
+
141
+
142
+
143
+ ```