gpt4 book ai didi

javascript - 无法让 OnTriggerEnter 循环

转载 作者:行者123 更新时间:2023-12-01 02:42:51 25 4
gpt4 key购买 nike

public class Storm : MonoBehaviour {

[SerializeField] private PlayerVitals playerVitals;
[SerializeField] private bool health;
[SerializeField] private float value;

public float waitTime = 1f;
float timer;

void Start () {
InvokeRepeating ("OnTriggerEnter", 0.0f, 1.0f);
}

// Update is called once per frame
void Update () {

}
IEnumerator OnTriggerEnter (Collider col)
{
if (col.gameObject.tag == "storm") {

playerVitals.healthSlider.value -= value;
yield return new WaitForSeconds (1);
}
}
IEnumerator OnTriggerExit (Collider col){
if (col.gameObject.tag == "storm") {

playerVitals.healthSlider.value += value;
yield return new WaitForSeconds (1);
}
}
}

我正在为一个小组项目编写代码,并试图获得它,以便当玩家处于触发盒内时,它每秒都会减少生命值,并且每秒都会以相同的量恢复到他们离开触发盒的程度。盒子。我的团队仅由设计师组成,因此编码对我来说有点困难,但我必须观看教程才能为这个项目学习一些内容。附注我将此代码附加到播放器,因此它调用标签“storm”,这是触发框。

最佳答案

首先,从Start函数中删除InvokeRepeating("OnTriggerEnter", 0.0f, 1.0f);OnTriggerEnter 函数由 Unity 自动调用。

OnTriggerEnterOnTriggerExit 函数仅调用一次。请注意,OnTriggerStay 因无法工作而闻名 sometimes您应该避免使用它。这个网站上有无数关于此的帖子和here就是一个例子。

由于您将回调函数设为 IEnumerator,因此您实际上可以在 while 循环中执行此操作,而无需卡住游戏且无需 Update function 如果你想在协程函数中按顺序执行操作。当调用 OnTriggerEnter 时,将标志设置为 true,然后使用该标志跳转到 while 循环。当调用 OnTriggerExit 时,将该标志设置为 false 并且 while 循环应该自行退出。

bool triggerEntered = false;

IEnumerator OnTriggerEnter(Collider col)
{
if (col.gameObject.tag == "storm")
{
triggerEntered = true;

//Decrease while triggerEntered is true
while (triggerEntered)
{
playerVitals.healthSlider.value -= value;
yield return new WaitForSeconds(1);

//Exit if we hit the min value?
if (playerVitals.healthSlider.value <= 0)
{
yield break;
}
}
}
}

IEnumerator OnTriggerExit(Collider col)
{
if (col.gameObject.tag == "storm")
{
triggerEntered = false;

//Increase while triggerEntered is false
while (!triggerEntered)
{
playerVitals.healthSlider.value += value;
yield return new WaitForSeconds(1);

//Exit if we hit the max value?
if (playerVitals.healthSlider.value >= 100)
{
yield break;
}
}

}
}

关于javascript - 无法让 OnTriggerEnter 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47440679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com