IEnumerator LightningStrikeAttack() { readyForFire.text = "Firing!"; float normalMovespeed = moveSpeed; Debug.Log("Lightning"); canAttack = false; GameObject LightningStrikeClone = Instantiate(lightningStrikePrefab, transform); LightningProjectile lightningScript = LightningStrikeClone.GetComponent<LightningProjectile>(); Light2D telegraph = lightningScript.telegraph.GetComponent<Light2D>(); GameObject Lightning = lightningScript.Lightning; lightningScript.godNumber = GetGodNumber(); // telegraph attack moveSpeed = moveSpeed / 2; float timer = 0f; while (timer < chargeTime && chargeTime != 0) { spriteRenderer.sprite = godInfo.whenCharging; telegraph.intensity = Map(timer, 0, chargeTime, minIntensity, maxIntensity); // Debug.Log(timer + " intensity: " + telegraph.intensity); timer += Time.deltaTime; yield return null; } // actual attack telegraph.gameObject.SetActive(false); spriteRenderer.sprite = godInfo.whenShooting; Lightning.SetActive(true); entranceEffects.StartChromaticAberration(0.5f, 1f); cameraShake.StartShake(cameraShake.shakePropertyOnMinionEnter); GameObject go = Instantiate(lightningImpactParticles, transformToInstantiateParticlesAt.position, Quaternion.identity); Destroy(go, 4f); projectileAudio.clip = lightningThrash; projectileAudio.time = 0.2f; projectileAudio.Play(); moveSpeed = 0; Light2D[] lights = transform.GetComponentsInChildren<Light2D>(); Debug.Log("Lights: " + lights); foreach (Light2D light in lights) { StartCoroutine(RampDownLight(light, 0.5f)); } readyForFire.text = "Cooling off!"; yield return new WaitForSeconds(0.5f); Destroy(LightningStrikeClone); spriteRenderer.sprite = godInfo.topBarIcon; yield return new WaitForSeconds(4.5f); readyForFire.text = "Ready to fire!"; canAttack = true; moveSpeed = normalMovespeed; }
private void CreateConductor(Vector2 v, Vector2 p) { var newProj = new LightningProjectile(5) { direction = v, start = p, damage = damage / 3 }; node.runtime.World.CreateProjectile(newProj, node.caster); }
public void Cast(Wizard caster) { var target = caster.runtime.RightTarget; var targetPos = target?.GetTargetPosition() ?? caster.spritePosition + new Vector2(1, 1); var projectileDetails = new LightningProjectile(20) { direction = caster.Position.GetDirectionTo(target.GetTargetPosition()), start = caster.spritePosition, damage = 100 }; caster.CreateProjectile(projectileDetails); }
protected override void DoWeaponActions() { //Get Projectile GameObject hookObject = ObjectPool.Instance.GetObject(PoolObjectType.LightningProjectile); if (hookObject) { //Initialize LightningProjectile currentHook = hookObject.GetComponent <LightningProjectile>(); ProjectileProperties newProperties = new ProjectileProperties(projectileProperties); currentHook.Init(projectileProperties, muzzleTransform); currentHook.CheckForTargets(); animator.SetTrigger("Shoot"); } }
private void SpawnNextProjectile() { LightningGun.ProjectileProperties newProperties = new LightningGun.ProjectileProperties(projectileProperties); newProperties.maxDistance = projectileProperties.maxDistancePerSubChain; //Spawn next hook GameObject nextHookObject = ObjectPool.Instance.GetObject(PoolObjectType.LightningProjectile); if (nextHookObject) { //Initialize LightningProjectile nextProjectile = nextHookObject.GetComponent <LightningProjectile>(); nextProjectile.Init(newProperties, transform, enemyCount, ignoreTargets); if (!nextProjectile.CheckForTargets()) { nextProjectile.ResetToDefaults(); } } }