示例#1
0
    // Update is called once per frame
    void Update()
    {
        if (Ragdolled)
        {
            ResetLaser();
            if (!isDead && !StayRagdollTimer.Finished)
            {
                if (StayRagdollTimer.Update())
                {
                    holder.Ragdolled = false;
                }
                if (holder.Distance < 0.25f && holder.AngleDiff < 5)
                {
                    UnRagdoll();
                }
            }
            else if (isDead)
            {
                WaitAfterDeadTimer.Update();
            }
            return;
        }

        if (FindTargetTimer.Update())
        {
            FindTarget();
            FindTargetTimer.Reset();
        }


        ShootCooldown.Update();
        if (UpdateTargetTimer.Update())
        {
            UpdateTargetTimer.Reset();
            if (Target)
            {
                LevelManager.Instance.CurrentPart.PathFinder.FindPath(AgentTransform.position, Target.position, NewPath);
            }
        }

        if (Target)
        {
            if (CanSeeTarget)
            {
                Shoot();
            }
        }

        if (!Target || !CanSeeTarget)
        {
            ShootTimer.Reset();
            ResetLaser();
        }

        ColorValue = Mathf.Lerp(ColorValue, (CanSeeTarget ? 1f : 0f), Game.EnemyDelta * ColorChangeSpeed);
        EyeRenderer.materials[1].SetColor("_Color", Color.Lerp(NormalColor, AngryColor, ColorValue));
    }
示例#2
0
    public override void Reset()
    {
        base.Reset();
        FindTargetTimer.Reset();
        StayRagdollTimer.Reset();

        WaitAfterDeadTimer.Reset();
        laser.gameObject.SetActive(false);

        SetTarget(null, true);

        BodyTransform.position  = transform.position;
        AgentTransform.position = transform.position;

        UnRagdoll();
    }