我的敌人效果脚本中的问题不能在同一个敌人中使用超过1个

时间:2018-12-21 11:36:33

标签: c# unity3d

如果玩家靠近敌人,我会降低敌人的速度并使其工作正常,但是如果文件中存在相同敌人中的一个具有相同的脚本,或者如果有更多敌人都在附近,则可以为敌人效力如果有一个以上的同一个敌人靠近玩家,而另一个则不在,则玩家无法工作 如果有一个以上具有相同效果的同一个敌人中只有一个靠近玩家或更多,那么该如何使敌人产生效果? 这是我的效果脚本

void Update () {
        if (Vector3.Distance (target.position, transform.position) < 20) {
                //    if the enemy near effect
             player.speed = 5f;
        } else {
             player.speed = 10f;
        }

1 个答案:

答案 0 :(得分:0)

这是不需要您添加或更改脚本位置和/或向该对象添加任何其他组件的解决方案。

通过使用较短的时间间隔,并且仅在“敌人”以前变慢的情况下才消除速度变慢,因此您无需执行额外的步骤即可。

这不是最好的方法,评论中有一些很棒的建议,但这是一种方法。

经过测试并确认可在Unity中使用。

private float timeUntilSlowEnds = 0;
private bool isSlowing = false;

void Update ()
{
    if (Vector3.Distance (target.position, transform.position) < 20)
    {
        //1/4 second of slow time
        timeUntilSlowEnds = 0.25f;
        isSlowing = true;
    }

    if(timeUntilSlowEnds <= 0)
    {
        if(isSlowing)
        {
            //only reset player speed if ending slow
            isSlowing = false;
            player.speed = 10.0f;
        }
    }
    else
    {
        //slow the player each frame and decrease the timer
        player.speed =  5.0f;
        timeUntilSlowEnds -= Time.deltaTime;
    }
}