所以我试着编写这个代码,让角色的被动技能在被击中时被打断。我想这样做的方法是让程序从健康变量中获取字符健康值,并在每一帧检查它是否被删除。
然而,经过研究,我似乎无法找到实际做到这一点的方法。从变量中获取一个数字,而不受新变量的影响。
有什么想法吗?
答案 0 :(得分:0)
在每个帧期间使用另一个变量来存储健康变量的最后已知值,然后比较变量以查看它们是否具有不同的值。例如:
int health = 100;
int lastFrameHealth;
void Start ()
{
lastFrameHealth = health;
}
void Update ()
{
if (health < lastFrameHealth)
{
StartCoroutine("InterruptPassiveSkill", 5f);
}
lastFramehealth = health;
}
void OnCollisionEnter(Collision collision)
{
health -= 10;
}
IEnumerator InterruptPassiveSkill (float seconds)
{
// insert code to deactivate passive skill here:
yield return new WaitForSeconds(seconds); // delay for number of seconds
// insert code to reactivate passive skill here:
}
此示例中使用的协程是一种添加延迟的简单方法。协同程序还可以更快地创建简单的状态机。协同程序是Unity功能,非C#原生。