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); }
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; } } }