AttackInfo.Target
の値に基づいた位置にポインタを置くコードがあります。 Stats[lifeStatus]
配列リファレンスを使用して、文字が死んでいるかどうかを判断するコードもあります.0は死んで1は生きています。私のif文が私の関数の値を正しくチェックしないのはなぜですか?
私はTarget
に死んだ文字の値をスキップして、攻撃する生きている文字のみを選択できるようにします。しかし、それは効果がないようです。
なぜ機能しないのですか?
else if (state == CHARACTER1TARGETCHOICE) {
attackButton.enabled = false;
abilitiesButton.enabled = false;
itemButton.enabled = false;
defendButton.enabled = false;
fleeButton.enabled = false;
if (pointer.GetComponent<SpriteRenderer>().enabled == false) {
pointer.GetComponent<SpriteRenderer>().enabled = true;
}
if (Input.GetKeyDown (KeyCode.UpArrow)) {
character1AttackInfo.Target -= 1;
bool checkTargetAlive = false;
while (checkTargetAlive) {
if (enemy1Stats [lifeStatus] == 0 && character1AttackInfo.Target == 1) {
character1AttackInfo.Target -= 1;
} else if (enemy2Stats [lifeStatus] == 0 && character1AttackInfo.Target == 2) {
character1AttackInfo.Target -= 1;
} else if (enemy3Stats [lifeStatus] == 0 && character1AttackInfo.Target == 3) {
character1AttackInfo.Target -= 1;
} else if (enemy4Stats [lifeStatus] == 0 && character1AttackInfo.Target == 4) {
character1AttackInfo.Target -= 1;
} else if (character1AttackInfo.Target == 0) {
character1AttackInfo.Target = 4;
} else {
checkTargetAlive = false;
}
}
}
スクリプトのこの部分では、敵の番号が低いほど画面上に表示されます。したがって、上矢印を押すと、ターゲットの番号が下がり、カーソルが上に移動します。文字の上の異なる場所に移動するカーソルは、すでに完全に動作しています。ターゲットは何らかの理由でスキップしません。一度敵が死んで、enemy1Stats == 0が真でターゲットが1になっても、スキップしません。
この 'enemy1Stats [lifeStatus] == 0'は 'true'と同じで、' character1AttackInfo.Target == 1'は 'true'と同じですか?あなたはチェックしましたか? – CodingYoshi
それは異なります。 enemy1Stats [lifeStatus] == 0は、敵が死んでいる場合にのみ真になります。これはすべてより大きなスクリプトの一部です。また、character1AttackInfo.Target == 1は、カーソルがそこに移動された場合にのみ真となります。このスクリプト。この例では、enemy1Stats [lifeStatus] == 0が真であると仮定し、character1AttackInfo.Targetはしばらくの間真でなければならないが、変更する必要がある。しかしそれは変わらない。それは問題です。 –
'bool checkTargetAlive = false;'の後に 'while(checkTargetAlive)'が続きます。どのようにそれを実行する必要がありますか? –