void Start() { if (autoShooting) { InvokeRepeating("AutoShoot", 0f, fireRateValue.GetStatValue()); } }
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); } } }
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; } }
public void SetMove(Vector2 vector) { rb2d.velocity = vector.normalized * speedValue.GetStatValue(); }