void OnTriggerEnter(Collider other)
    {
        FPP = other.gameObject.GetComponent <CharacterController>();
        TeleportCooldown teleportCooldown = other.gameObject.GetComponent <TeleportCooldown>();

        if (teleportCooldown.OnCooldown() == false)
        {
            StartCoroutine(TeleportSequence(teleportCooldown));
        }
    }
示例#2
0
    public void FBHurt()
    {
        Health--;

        if (Health == 0 && Animation.CurrentAnimation != "Death")
        {
            Animation.Play("Death");
            FireballTimer.Stop();
            AttackCooldown.Stop();
            TeleportCooldown.Stop();
            TeleportMove.Stop();
        }
    }
示例#3
0
    public void Hurt(int h, Knight player)
    {
        Health -= h;

        if (Health == 0 && Animation.CurrentAnimation != "Death")
        {
            Animation.Play("Death");
            FireballTimer.Stop();
            AttackCooldown.Stop();
            TeleportCooldown.Stop();
            TeleportMove.Stop();
        }
    }
    IEnumerator TeleportSequence(TeleportCooldown teleportCooldown)
    {
        portal1 = GameObject.FindGameObjectWithTag("Portal1").GetComponent <Transform>();
        portal2 = GameObject.FindGameObjectWithTag("Portal2").GetComponent <Transform>();


        teleportCooldown.changeCooldown();

        FPP.enabled            = false;
        FPP.transform.position = new Vector3(portal1.position.x, portal1.position.y, portal1.position.z);
        teleport.Play();
        if (portal1.eulerAngles.y == portal2.eulerAngles.y)
        {
            FPP.transform.Rotate(0, 180, 0);
        }

        FPP.enabled = true;
        yield return(new WaitForSeconds(0.5f));

        teleportCooldown.changeCooldown();
    }
示例#5
0
    public override void _Process(float delta)
    {
        if (Health <= 0)
        {
            return;
        }

        var bs = Area.GetOverlappingBodies();
        var a  = new Node2D[bs.Count];

        bs.CopyTo(a, 0);
        a = a.Where(b => b is Knight).ToArray();
        if (TeleportCooldown.TimeLeft == 0)
        {
            if (a.Any())
            {
                TeleportMove.Start(1f);
                TeleportCooldown.Start(4f);
                Animation.Play("Teleport");
                AttackCooldown.Start(1.6f);
            }
            else if (GlobalPosition != Start)
            {
                TeleportMove.Start(1f);
                TeleportCooldown.Start(4f);
                Animation.Play("Teleport");
                AttackCooldown.Start(1.6f);
            }
        }
        else
        {
            if (AttackCooldown.TimeLeft == 0)
            {
                TeleportCooldown.Start(3f);
                AttackCooldown.Start(3f);
                Animation.Play("Attack");
                FireballTimer.Start(1f);
            }
        }
    }