【问题标题】:How would I apply slowness effect to player without Coroutines我如何在没有协程的情况下对玩家应用缓慢效果
【发布时间】:2022-06-15 20:32:47
【问题描述】:

几天前我开始了一个新项目,一个类似于 MOBA 的测试,并且大部分进展顺利。目前我在将缓慢效果或增益/减益系统导入游戏时遇到困难。确切的问题是计时器我需要更改角色的速度值,但我不能在协程中使用 ref/out 参数。我尝试了一些其他的事情,比如使用调用或使用函数,但他们只是没有做我想做的事。感谢所有反馈,并在此先感谢
代码如下:

协程:

public IEnumerator ApplyDebuff(ref float stat, float percentage, float duration)
{
    float originalValue = stat;
    float timeStamp = Time.time;

    while (Time.time < timeStamp + duration)
    {
        float debufValue = percentage / 100 * originalValue;
        stat -= debufValue;

        yield return null;
    }
    stat = originalValue;
}

我调用协程的地方

private void CheckForCollision()
{
    Collider[] colliders = Physics.OverlapSphere(position, scale, layerMask);

    foreach(Collider c in colliders)
    {
        c.TryGetComponent<PlayerController>(out PlayerController player);
        player.ApplyDebuff(ref player.speed, 70, 5);
        player.TakeDamage(50);

        Destroy(gameObject);
    }
}

【问题讨论】:

  • 为什么不将PlayerController 作为参数传递?它不是那么干净,但应该可以工作

标签: unity3d


猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-04
  • 1970-01-01
  • 1970-01-01
  • 2020-11-10
  • 1970-01-01
  • 2018-11-28
  • 2018-06-16
相关资源
最近更新 更多