void SpawnLaser(TargetCallback target_callback) { HomingProjectile new_laser = Instantiate(laser, transform.position, Quaternion.identity); new_laser.SetSource(owner); new_laser.transform.position = transform.position; SoundManager.instance?.LocalPlaySfx(laser_sfx); Transform target = target_callback.target.stats.center_mass; new_laser.SetTarget(target_callback.target); new_laser.SetOnHit((character, b) => target_callback.success_callback(character)); float angle = 0; Vector3 to_target = target.position - transform.position; if (to_target.x < 0) { angle = Vector2.SignedAngle(Vector2.left, to_target) + 180; } else { angle = Vector2.SignedAngle(Vector2.right, to_target); } new_laser.transform.rotation = Quaternion.Euler(0, 0, angle); }
public override void perform(CombatEntity caster, CombatEntity target) { base.perform(caster, target); GameObject projectileGameobject = new GameObject(); projectileGameobject.transform.position = caster.transform.position; HomingProjectile hp = projectileGameobject.AddComponent <HomingProjectile>(); hp.Setup(spellVFX, target, this, projectileSpeed); }
public HomingProjectile Spawn() { if (can_spawn) { anim.SetTrigger("Spawn"); HomingProjectile new_rocket = Instantiate(rocket, spawn_point.position, transform.rotation); new_rocket.SetTarget(homing_target); new_rocket.GetComponent <Attack>().SetOnHit(on_hit); return(new_rocket); } return(null); }
public override void AttackAction(Unit target) { for (int i = 0; i < bulletDirections.Length; i++) { HomingProjectile bullet = GameObject.Instantiate(Links.links.homingBullet).GetComponent <HomingProjectile> (); bullet.Attacker = this; bullet.team = team; bullet.damage = attackDamage; bullet.lifeTime = bulletRange / bulletSpeed; bullet.speed = bulletSpeed; bullet.Launch(target, transform.position + Vector3.up * centerHeight + transform.TransformVector(bulletDirections[i]) * 0.5f, transform.TransformVector(bulletDirections[i])); } }
protected override void OnKill(Character killer, Character killed) { HomingProjectile new_projectile = Instantiate(projectile); new_projectile.transform.position = killer.stats.center_mass.position; new_projectile.LaunchTowardsTarget(Vector2.up); new_projectile.SetSource(killer); new_projectile.SetOnHit(OnHit); Character target = target_collector.GetRandomTarget(); new_projectile.SetTarget(target); }
protected override void OnSpendEnergy(Character source, float spent) { HomingProjectile new_projectile = Instantiate(projectile); new_projectile.transform.position = source.stats.center_mass.position; new_projectile.LaunchTowardsTarget(Vector2.up); new_projectile.SetSource(source); new_projectile.SetOnHit((hit, hit_by) => OnHit(hit, hit_by, spent)); Character target = target_collector.GetRandomTarget(); new_projectile.SetTarget(target); }
void FireHomingProjectile() { animator.SetTrigger("Shoot"); audioSource.PlayOneShot(shootAudio); GameObject clone = Instantiate(homingProjectile, transform.position + Vector3.up * 1.8f, Quaternion.identity); HomingProjectile homingProjectileComp = clone.GetComponent <HomingProjectile>(); homingProjectileComp.SetSpeed(1.5f); homingProjectileComp.SetSelfDestruct(8); }
private IEnumerator FiringLoop() { yield return(new WaitForSeconds(startDelayDuration)); while (true) { for (int i = 0; i < burstShotCount; i++) { HomingProjectile projectile = HomingProjectilePooler.Instance.GetPooledObject(); projectile.Launch(projectileLayer.MaskToLayer(), projectileSpawnPoint, target); yield return(new WaitForSeconds(burstShotRate)); } yield return(new WaitForSeconds(cooldownDuration)); } }
void AttackTarget() { isChannelingAttack = true; currentChannelTime += Time.deltaTime; moveOrder.hasStarted = false; if (currentChannelTime >= channelTime) { currentChannelTime = 0f; currentCooldown = cooldown; isChannelingAttack = false; GameObject projectile = (GameObject)GameObject.Instantiate(projectilePrefab, currentPosition, new Quaternion()); HomingProjectile projectileScript = projectile.GetComponent <HomingProjectile>(); projectileScript.Target = target; projectileScript.Owner = self; } }
override public void Update() { if (amountOfRocketsInChamber > 0) { secondsTilNextRound -= Time.deltaTime; if (secondsTilNextRound <= 0) { HomingProjectile rocket = Instantiate(prefabRocket, spawnPoint.position, Quaternion.identity); rocket.Launch(car.driver, car.state.up); secondsTilNextRound = secondsBetweenLaunches; amountOfRocketsInChamber--; } } else { base.Update(); // do regular cooldown } }
public override void ExecuteFire() { if (!target.isAlive) { return; } GameObject obj = Instantiate(projectilePrefab.gameObject) as GameObject; obj.GetComponent <ProjectileBase>().SetDamage(damage); obj.transform.position = shootPos.position; HomingProjectile homing = obj.GetComponent <HomingProjectile>(); homing.target = target; homing.BeginHoming(); if (shootSound != null) { AudioManager.instance.PlayAudio(shootSound); } StartCoroutine(FireDelay()); }
// Update is called once per frame public override void FixedUpdate() { base.FixedUpdate(); if (target) { if (Vector3.Distance(transform.position, target.position) < searchRange) { List <Transform> toAttack = new List <Transform> (); Collider[] nearby = Physics.OverlapSphere(target.position, searchRange, Game.game.enemyLayer); for (int i = 0; i < nearby.Length; i++) { if (toAttack.Count < maxCluster) { if (nearby [i].GetComponent <Enemy> ().type == target.GetComponent <Enemy>().type) { toAttack.Add(nearby[i].transform); } } } for (int i = 0; i < toAttack.Count; i++) { GameObject cluster = (GameObject)Instantiate(clusterMissle, transform.position, transform.rotation); HomingProjectile missle = cluster.GetComponent <HomingProjectile>(); missle.target = toAttack[i]; missle.damage = Mathf.RoundToInt((float)damage / (float)toAttack.Count); missle.velocity = transform.right * speed * 1.5f; missle.parent = parent; missle.Initialize(); } Destroy(Instantiate(hitParticle, transform.position, Quaternion.identity), 1f); ReturnToPool(); } } }
//Shoot void Shoot() { if (isPaused == false) { if (isOut == true) { if (shoot == true) { muzzleflash.Play(); RaycastHit hit; if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range)) { Debug.Log(hit.transform.name); //Enemies Target target = hit.transform.GetComponent <Target>(); if (target != null) { target.TakeDamage(damage); } if (hit.rigidbody != null) { hit.rigidbody.AddForce(-hit.normal * impactForce); } //Windows WindowBreak2 target2 = hit.transform.GetComponent <WindowBreak2>(); if (target2 != null) { target2.TakeDamage(damage); } if (hit.rigidbody != null) { hit.rigidbody.AddForce(-hit.normal * impactForce); } //Cameras CameraBreak target3 = hit.transform.GetComponent <CameraBreak>(); if (target3 != null) { target3.TakeDamage(damage); } if (hit.rigidbody != null) { hit.rigidbody.AddForce(-hit.normal * impactForce); } //Vents VentBreak target4 = hit.transform.GetComponent <VentBreak>(); if (target4 != null) { target4.TakeDamage(damage); } if (hit.rigidbody != null) { hit.rigidbody.AddForce(-hit.normal * impactForce); } //Explosive Barrels HomingProjectile target5 = hit.transform.GetComponent <HomingProjectile>(); if (target5 != null) { target5.TakeDamage(damage); } if (hit.rigidbody != null) { hit.rigidbody.AddForce(-hit.normal * impactForce); } //Boss muythicc target6 = hit.transform.GetComponent <muythicc>(); if (target6 != null) { target6.TakeDamage(damage); } if (hit.rigidbody != null) { hit.rigidbody.AddForce(-hit.normal * impactForce); } GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal)); Destroy(impactGO, 2f); } } } } }
public void Ini(HomingProjectile rocket_prefab, Attack.OnHit on_hit, Transform target) { rocket = rocket_prefab; this.on_hit = on_hit; homing_target = target; }
public void SetLaser(HomingProjectile laser) { this.laser = laser; }