Beispiel #1
0
    private void die()
    {
        owner.GameOver(owner);
        onHit(AttackType.None, this);
        target = null;
        getRigidBody2D().velocity = Vector2.zero;
        Destroy(GetComponent <Collider2D>());
        healthBar.setDead();
        RandomCatNoises n = transform.GetChild(0).GetComponent <RandomCatNoises>();

        n.playMeow();
        n.enableNoises = false;

        if (owner.enemy)
        {
            EventTrigger ET = GetComponent <EventTrigger>();
            if (ET != null)
            {
                Destroy(ET);
            }
            gameObject.layer = owner.getLayer(false);
        }
        else
        {
            Action.interactable = false;
        }

        if (getAnimator().GetBool("fly"))
        {
            Vector3 startPos = transform.position;
            Vector3 endPos   = owner.getLosePos(this);
            Vector3 bending  = Vector3.left;
            LeanTween.value(gameObject, 0, 1, 2.1f).setDelay(0.5f).setOnUpdate((float val) =>
            {
                Vector3 currentPos = Vector3.Lerp(startPos, endPos, val);
                currentPos.x      += bending.x * Mathf.Sin(val * Mathf.PI);
                currentPos.y      += bending.y * Mathf.Sin(val * Mathf.PI);
                transform.position = currentPos;
                setPositionZ(currentPos);
            }).setOnComplete(() =>
                             getAnimator().SetBool("fly", false));
            flying = false;
        }
        else
        {
            StartCoroutine(moveToOrig());
        }
    }