无法弄清楚导致间歇性错误的原因。问题在于,当持有A键或快速按下A键时,“爆炸A”动画会多次触发,但并非总是如此。
void Start() {
aUsable = true;
aCooldown = 0.5f;
aTimer = 0;
}
void Update () {
CooldownManager();
Cast();
}
void Cast() {
if (Input.GetKey(KeyCode.A) && aUsable){
spell.SetTrigger("explosionA");
aUsable = false;
}
}
void CooldownManager() {
if (Time.time > aTimer){
aUsable = true;
aTimer = Time.time + aCooldown;
}
}
答案 0 :(得分:1)
问题在于,即使aUsable bool已经为真,也会调用CooldownManager,并且当Time.time非常接近aTimer时可能会触发该法术,因此在允许下一个法术触发之前经过的时间是" aTimer - Time.time"那比cooldown少。
要解决此问题,您可以:
void Cast() {
if (Input.GetKey(KeyCode.A) && aUsable){
spell.SetTrigger("explosionA");
aUsable = false;
aTimer = Time.time + aCooldown;
}
}
void CooldownManager()
{
if (!aUsable && Time.time >= aTimer)
{
aUsable = true;
aTimer = Time.time + aCooldown;
}
}
这应该会给你一个关于法术触发的正确频率。
我希望这能解决你的错误。 罗伯特
答案 1 :(得分:0)
在Cast()函数
中尝试此操作if (Input.GetKeyDown(KeyCode.A) && aUsable){
//...
}