我试图在角色触摸尖峰时做到这一点,然后将检查点值设置为1,并且当它触摸标记时,死掉(我在尖峰处添加了标签“ Spikes1”,在标记中添加了“ Flag”标签)。
我尝试在画布上添加文本,以查看代码是否完全有效(debug.text是该文本)。
代码:
void OnCollisionEnter2D(Collision2D col) {
if (col.gameObject.tag == "Coin") {
debug.text = "Coin touched";
Health = Health - 1;
} else if (col.gameObject.tag == "Spikes1") {
debug.text = "Spikes touched";
CheckPointNumber = 1;
} else if (col.gameObject.tag == "Flag") {
debug.text = "Flag touched";
Health = 0;
}
JumpActive = true;
}
一切都可以在Unity本身中正常运行,但是当我构建游戏并将其作为exe文件运行并触摸峰值时,它的行为就像我触摸了标志,而当我触摸标志时则什么也没有发生。
答案 0 :(得分:0)
您是否尝试遵循Unity3D网站上的Survival Shooter示例的某些原则? 在那里,您会看到“玩家健康”部分,其中显示了您应如何正确处理玩家的健康:Survival Shooter Training
在您的代码中,我可以看到您每当它命中“硬币”时就会降低运行状况,因此您应该进行如下检查:
if (col.gameObject.tag == "Coin") {
debug.text = "Coin touched";
if (Health > 0)
{
Health--;
}
else
{
Death();
}
}
Death()是您为了“杀死”角色而需要进行编程的函数。 您应该通过调用Death()而不是使Health等于0,对“标记”标签检查应用相同的行为。
关于错误的行为,请检查是否正确填充了所触摸对象的标签。也许该标志被配置为以尖峰运行。
希望有帮助。