public override void ActionUpdate(float timekey) { timer += timekey; if (timer > spawnDelay && !projectileSpawned) { // apply damage Vector3 spawnPoint = character.transform.position + character.transform.TransformDirection(projectileSpawn); projectileInstance = GameObject.Instantiate(projectile); projectileInstance.transform.position = spawnPoint; projectileInstance.character = character; projectileInstance.velocity = velocity; projectileSpawned = true; } if (timer > spawnDelay + timeOfFlight) { projectileInstance.Destroy(); Destructible destructible = target.GetComponent <Destructible>(); if (destructible != null) { destructible.Damage(CombatUtils.GetDamageToDestructible(destructible, baseDamage * damageModifer)); } Done(); } }
private void applyEffects() { if (effect != null) { GameObject instance = GameObject.Instantiate(effect); instance.transform.position = targetSelf ? character.position : target.position; } destructible.Damage(CombatUtils.GetDamageToDestructible(destructible, weapon.baseDamage * damageModifier)); target.AddBuffs(buffs); }