private void OnTriggerEnter(Collider collision) { if (WorldSwitch.instance.state == AwakeState.Nightmare) { if (collision.gameObject.name == "Shield" && blockable) { print("blocked"); GameManager.instance.ChangeBuddyPower(pwrToShield); //blocked --> return batMode = BatMode.Returning; } else if (collision.gameObject.name == "Ammo(Clone)") { var ammo = collision.GetComponent <EnergyAmmo>(); TakeDamage(ammo.ammoDamage); KickBack(ammo.dir, 500); ammo.gameObject.SetActive(false); print("ammo hit"); } else if (collision.gameObject.layer == 13) { print("bat hit player"); GameManager.instance.ChangeToddlerHealth(dmgToPlayer); batMode = BatMode.Returning; returnTime = returnTimeValue; } } }
void FixedUpdate() { distToPlayer = Vector3.Distance(transform.position, playerTransform.position); // switch states? if (WorldSwitch.instance.state == AwakeState.Nightmare && !sleeping) { if (distToPlayer < attackRadius && (batMode != BatMode.Returning || returnTime <= returnTimeValue - attackReturnTime)) { batMode = BatMode.Attacking; if (i < 0.2f) { //animaatio/muu indikaatio että on tulossa unblockable var newExplosion = Instantiate(explosionEffect, transform.position, transform.rotation); //placeholder Destroy(newExplosion, 2); blockable = false; } else { blockable = true; } } else if (rb.position != startPos && returnTime > 0) { batMode = BatMode.Returning; i = Random.Range(0f, 1f); } else { batMode = BatMode.Flying; } } else { batMode = BatMode.Hanging; } if (batMode != BatMode.Hanging && batMode != BatMode.Animated) { if (batMode == BatMode.Attacking) { target = playerTransform.position; returnTime = returnTimeValue; } else if (batMode == BatMode.Returning) { target = startPos; } Fly(); } else { rb.velocity = Vector3.zero; } prevMode = batMode; }
public void KickBack(Vector3 dir, float force) { rb.AddForce(dir * force, ForceMode.Impulse); //vaihda lepakon liikkumismode batMode = BatMode.Animated; }