我在其他地方有代码,它根据Stats[lifeStatus]
值将指针放在一个位置。我还有一些代码可以使用Target
数组引用确定我的字符是否已死,其中0表示死,1表示活着。
我希望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;
}
}
}
跳过死角的值,这样你才能选择要攻击的生命角色。但是,它似乎没有效果。
为什么不起作用?
import arcpy
import os
import tempfile
import shutil
shpFileArray = []
print "\n"
arcpy.env.overwriteOutput = True
newFolder = "destinationpath"
if os.path.exists(newFolder):
tmp = tempfile.mktemp(dir=os.path.dirname(newFolder))
shutil.move(newFolder, tmp)
shutil.rmtree(tmp)
os.makedirs(newFolder)
arcpy.env.workspace = newFolder
for file in os.listdir("sourcepath"):
layerName = file[:-4]
fileSHP = layerName+".shp"
for file in os.listdir("sourcepath"):
if file.endswith(".txt"):
xyTable = (os.path.join("destinationpath", file))
arcpy.MakeXYEventLayer_management(table= xyTable, in_x_field="EastingM", in_y_field="NorthingM", out_layer="layerName",...continues...
arcpy.FeatureClassToFeatureClass_conversion(in_features="layerName", out_path="destinationpath", out_name= fileSHP,....continues....
在剧本的这一部分中,敌人的数字越低,他们在屏幕上的数字越高。因此,当按下向上箭头时,目标的数字会下降,因此光标将向上移动。移动到角色上方不同位置的光标已经完美运行。由于某种原因,目标不会跳过。一旦敌人死亡,因此enemy1Stats == 0为真且Target也为1,它仍然不会跳过。
答案 0 :(得分:1)
不会调用该代码块:
while (checkTargetAlive)
接着是
{{1}}
作为一般性评论,我不太了解你的游戏逻辑应该如何工作,但问题中的那个块有一些明确的代码味道。这可能是实现游戏逻辑的最简洁方法。
答案 1 :(得分:0)
所以我不小心提前将checkTargetAlive设置为false。这使得while循环从未运行,这使得光标无法正常工作。只是提前将其设置为真,使它像魅力一样工作:
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 = true;
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;
}
}
}