Пример #1
0
 void Start()
 {
     if (autoShooting)
     {
         InvokeRepeating("AutoShoot", 0f, fireRateValue.GetStatValue());
     }
 }
Пример #2
0
    private void DealDamage(GameObject target)
    {
        IDamageable damageable = target.GetComponent <IDamageable>();

        if (damageable != null && damageable.Status != Status)
        {
            damageable.TakeDamage(damageValue.GetStatValue());
            time += coolDown;

            if (triggerActivatorSpawn)
            {
                triggerActivatorSpawn.ActivateTrigger(EventType.DealDamage);
            }
            if (triggerActivator)
            {
                triggerActivator.ActivateTrigger(EventType.DealDamage);
            }

            if (destroyAfterDealDamage)
            {
                if (triggerActivator)
                {
                    triggerActivator.ActivateTrigger(EventType.Death);
                }
                Destroy(gameObject);
            }
        }
    }
Пример #3
0
 public void Shoot(float angle, bool must = false, Transform parent = null)
 {
     if (Time.time - lastShootTime > fireRateValue.GetStatValue() || must)
     {
         if (Random.value < chanceToShootAllValue.GetStatValue())
         {
             float angleOffsetRandomCurrent = Random.Range(-angleOffsetRandomValue.GetStatValue(), angleOffsetRandomValue.GetStatValue());
             for (int i = 0; i < numOfGunsValue.GetStatValue(); i++)
             {
                 if (Random.value < chanceToShootEveryValue.GetStatValue())
                 {
                     lastProjectile = Instantiate(projectile, gameObject.transform.position, Quaternion.identity);
                     lastProjectile.transform.Rotate(new Vector3(0, 0, angle + ((angleBetweenGunsValue.GetStatValue() * (numOfGunsValue.GetStatValue() - 1)) / 2) - angleBetweenGunsValue.GetStatValue() * i + angleOffsetValue.GetStatValue() + Random.Range(-angleBetweenGunsRandomValue.GetStatValue(), angleBetweenGunsRandomValue.GetStatValue()) + angleOffsetRandomCurrent));
                     lastProjectile.transform.Translate(-(distanceBetweenGunsValue.GetStatValue() * (numOfGunsValue.GetStatValue() - 1)) / 2 + i * distanceBetweenGunsValue.GetStatValue(), forwardOffsetValue.GetStatValue(), 0);
                     lastProjectile.SetActive(true);
                     if (setMoveForward)
                     {
                         moveVector = (lastProjectile.transform.TransformPoint(Vector2.up) - lastProjectile.transform.position).normalized;
                         if (lastProjectile.GetComponent <Move>())
                         {
                             lastProjectile.GetComponent <Move>().SetMove(moveVector);
                         }
                     }
                     if (parent)
                     {
                         lastProjectile.transform.parent = parent;
                     }
                     if (triggerActivator != null)
                     {
                         triggerActivator.ActivateTrigger(EventType.Shoot);
                     }
                 }
             }
         }
         lastShootTime = Time.time;
     }
 }
Пример #4
0
 public void SetMove(Vector2 vector)
 {
     rb2d.velocity = vector.normalized * speedValue.GetStatValue();
 }