示例#1
0
    public static Vomiting CreateVomit(Vomiting vomit, Transform at, Vector2 direction)
    {
        Vomiting flight = Instantiate <Vomiting>(vomit, at.position, at.rotation);

        flight.rb.velocity = direction * flight.speed;
        return(flight);
    }
示例#2
0
    public void EnemyAttack()
    {
        var pc = target.GetComponent <PlayerCombat>();

        if (pc.currentHealth < 0)
        {
            isAttacking = false;
        }

        if (isAttacking && !isBlocking && !isStunned)
        {
            //detect player in range
            Collider2D[] hitPlayer = Physics2D.OverlapBoxAll(attackPoint.position, new Vector2(attackRangeX, attackRangeY), 0, playerLayer);

            var r = Random.Range(0, 100);
            if (r < 60)
            {
                //60% probability WEAK
                attackType = 1;
            }
            else if (r > 60 && r < 75)
            {
                //15% probability STRONG
                attackType = 2;
            }
            else if (r >= 75 && r < 90)
            {
                //15% probability VOMIT
                attackType = 3;
            }
            else if (r >= 90)
            {
                //10% probability BLOCK
                attackType = 4;
            }

            anim.SetBool("isWalking", false);

            switch (attackType)
            {
            case 1:
                anim.SetTrigger("basicAttack");
                AudioManagerSFX.PlaySound("basicAttack");
                Debug.Log("weak attack");
                foreach (Collider2D player in hitPlayer)
                {
                    pc.TakeDamage(attackDamage);
                }
                break;

            case 2:
                anim.SetTrigger("strongAttack");
                AudioManagerSFX.PlaySound("strongAttack");
                Debug.Log("strong attack");
                foreach (Collider2D player in hitPlayer)
                {
                    pc.TakeDamage(strongDamage);
                }
                break;

            case 3:
                anim.SetTrigger("Vomit");
                Debug.Log("vomit");
                Vector2 direction = Vector2.right;
                if (GetComponentInChildren <SpriteRenderer>().flipX)
                {
                    direction = Vector2.left;
                }
                flight = Vomiting.CreateVomit(vomitPrefab, pukePoint, direction);
                Invoke("ByeVomit", despawn);
                break;

            case 4:
                stopped = false;
                Debug.Log("blocking");
                speed = speed / 2;
                anim.SetBool("isBlocking", true);
                anim.SetTrigger("Block");
                anim.SetBool("isWalking", false);
                isBlocking = true;
                if (!stopped)
                {
                    Invoke("StopBlock", 3f);
                }
                break;

            default:
                Debug.Log("welp that happened");
                break;
            }
        }
    }