如何在从检查点加载后禁用动画器



所以对于某些上下文,我制作了一个健康栏,它在 52 秒后加载(等待 52 秒,然后从 0 生命值变为 100 生命值(,现在我也做了检查点。两者都可以单独工作正常,但是当我死后,健康条动画会重置,我必须等待 52 秒才能看到健康条。我尝试在你死亡时禁用动画师并在检查点重生,但这不起作用,因为它被我的生命条脚本覆盖。这是我的健康栏脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Healthbar : MonoBehaviour
{   
[SerializeField] private Slider slider;
[SerializeField] private Animator anim;
private float Waittime = 52f;
public GameObject player;
public void SetMaxHealth(int health)
{
slider.maxValue = health;
slider.value = health;
}
public void SetHealth(int health)
{
slider.value = health;
}
private void Update()
{   
if (Waittime <= 0)
{
anim.enabled = false;
}
else
{
Waittime -= Time.deltaTime;
anim.enabled = true;
}
}
}

这是我在玩家从检查点重生后禁用动画器的尝试(可能会有所帮助(:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class healthafter : MonoBehaviour
{
// Start is called before the first frame update
private GameMaster GM;
public Animator anim;
void Start()
{
GM = GameObject.FindGameObjectWithTag("GM").GetComponent<GameMaster>();
transform.position = GM.lastCheckpointPos;
anim.enabled = false;
}
}

如何在玩家从检查点重生后禁用动画?

这段代码可以改进...但是对于当前的情况,您还必须重置 waitTime 变量。所以你在 heathafter 脚本中的 start 函数应该看起来像这样。

public HealthBar healthbar;
void Start()
{
GM = GameObject.FindGameObjectWithTag("GM").GetComponent<GameMaster>();
transform.position = GM.lastCheckpointPos;
anim.enabled = false;
healthbar.ResetWaitTime(); // this will call ResetWaitTime method from your healthbar script
}

将此添加到您的健康栏脚本

public void ResetWaitTime(){
Waittime =52;
}

我通过在检查点脚本中引用 waittime 变量(有 52 秒并等待动画加载的变量(来对它进行 fx。然后我说如果标签是 == 播放器,WaiTime = 0f

相关内容

  • 没有找到相关文章

最新更新