Exemplo n.º 1
0
 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;
         }
     }
 }
Exemplo n.º 2
0
    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;
    }
Exemplo n.º 3
0
 public void KickBack(Vector3 dir, float force)
 {
     rb.AddForce(dir * force, ForceMode.Impulse);
     //vaihda lepakon liikkumismode
     batMode = BatMode.Animated;
 }