void FireMissles() { RemoveNullShips(); if (count < TargetList.Count) { if (fireTimer <= 0) { Vector3 rot = transform.rotation.eulerAngles; Quaternion newRot = Quaternion.Euler(new Vector3(rot.x, rot.y, rot.z + Random.Range(-20f, 20f))); GameObject go = Instantiate(MisslePrefab, transform.position, newRot); Missle missle = go.GetComponent <Missle>(); missle.SetTarget(TargetList[count]); missle.SetOffsetVel(myShip.GetVel() + transform.up * launchSpeed * Time.deltaTime); go.layer = gameObject.layer; missle.SetVals(30, 0, 4f, 5f, 8, 100); fireTimer = fireInterval; count++; } else { fireTimer -= Time.deltaTime; } } else { Reset(); } }
private void MagicMissileAttack() { missleNextFire -= Time.deltaTime; missleNextFire = Mathf.Clamp(missleNextFire, 0, missleNextFire); //&& Input.GetKey(KeyCode.LeftShift) if (Input.GetMouseButtonDown(1) && missleNextFire <= 0f) { Ray ray = cam.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, 100)) { if (hit.collider.gameObject.tag != "Enemy") //Makes it so magic missles can only hit enemies (looks weird when you click the floor) { return; } navMeshAgent.isStopped = true; this.transform.LookAt(new Vector3(hit.point.x, this.transform.position.y, hit.point.z)); GameObject mm = Instantiate(magicMissile, atkOrigin.transform.position, Quaternion.identity); Missle mmInst = mm.GetComponent <Missle>(); mmInst.setTarget(hit.collider.gameObject); missleNextFire = (1 / mmInst.getAttackRate()); } } }
private void Shoot() { switch (projectileType) { case ProjectileType.BULLET: Bullet bullet = Instantiate(bulletPrefab, transform.position, Quaternion.identity); bullet.Initiate(-transform.position, damage, bulletSpeed); SoundController.PlayShoot(); break; case ProjectileType.LASER: RaycastHit2D hit = Physics2D.Raycast(transform.position, -transform.position, distanceToShoot, friendlyLayers); Vector2 end = Vector2.zero; if (hit) { Planet planet = hit.collider.gameObject.GetComponent <Planet>(); if (planet != null) { planet.Damage(damage); } end = hit.point; Laser laser = Instantiate(laserPrefab, transform.position, Quaternion.identity); laser.Initiate(new Vector2(transform.position.x, transform.position.y), end); } SoundController.PlayLaser(); break; case ProjectileType.MISSLE: Missle missle = Instantiate(misslePrefab, transform.position, Quaternion.identity); missle.Initiate(-transform.position, new Vector2(transform.position.x, transform.position.y), Vector2.zero, damage, bulletSpeed, 2); SoundController.PlayShoot(); break; } }
//发生碰撞,赋给玩家 void OnTriggerEnter(Collider other) { if (other.gameObject.CompareTag("Tank")) { Item item = null; switch (itemType) { case ItemType.Wrench: item = new Wrench(); break; case ItemType.Timer: item = new Timer(); break; case ItemType.Shileld: item = new Shileld(); break; case ItemType.OilBottle: item = new OilBottle(); break; case ItemType.Missle: item = new Missle(); break; } other.gameObject.GetComponent <Tank>().item = item; Destroy(gameObject); } }
void Start() { Missle tmp = Instantiate(missle, gameObject.transform.position, transform.rotation); //tmp.direction = gameObject.transform.forward; tmp.degAngle = gameObject.transform.eulerAngles.y; tmp.gameObject.SetActive(true); }
public void setSettings(WeaponSystem parentSystem, AudioSource source, Missle missle, AudioClip clip, float camRatio) { this.parentSystem = parentSystem; this.missle = missle; this.audioClip = clip; transform = parentSystem.transform; this.audioSource = source; this.camRatio = camRatio; }
public virtual Missle Shoot(Vector2 direction, float speed) { missleFireSound.PlayAudioClip(); Missle b = CreateMissle(); b.direction = direction; b.speed = speed; return(b); }
public override void Initialize() { AbilityHolder.instance.SetMissle(ref misslePrefab, ref missleMask); if (myMissle == null) { myMissle = Instantiate(misslePrefab); myMissle.SetActive(false); missleControl = myMissle.GetComponent <Missle>(); } playerTrans = PlayerManager.instance.Player.transform; }
public void LaunchMissle() { if (canInteract) { GameObject newMissle = (GameObject)Instantiate(currentMissle, new Vector3(Planet.current.radius, Planet.current.radius * 2 + 0.25f + GetMissleBounds().y, 0), Quaternion.identity); Camera.main.GetComponent <CameraController>().FollowMissle(newMissle.transform); Missle m = newMissle.GetComponent <Missle>(); m.Invoke("InvokedLaunch", 2); CloseEditor(); m.inEditor = false; } }
//Instantiate a prefab with an attached Missile Script public Missile projectile. void Update() { //Ctrl was pressed, launch a projectile if (Input.GetBottonDown) ("Fire")) { //instantiate the projectile at the position and rotation of this transform Missle clone = (Missile)instnatiate(projectile, transform.position, transform.rotation); //set the missles timeout destructor to 5 clone.timeoutDestructor = 5; } }
public void Awake() { entity = GetComponentInParent <Entity>(); reload *= entity.kReload; if (!prefabMissle) { if (entity.missles.ContainsKey(entity.defaulTypeMIssle)) { prefabMissle = entity.missles[entity.defaulTypeMIssle]; } } }
private void OnCollisionEnter(Collision col) { if (col.gameObject.tag == "Attack") { Missle missle = col.gameObject.GetComponent <Missle>(); if (missle != null) { TakeDamage(missle.getDamage()); Debug.Log("Hit for: " + missle.getDamage()); return; } } }
public void SeperateFromHere() { GameObject newM = (GameObject)Instantiate(MissleEditor.current.misslePrefab, transform.position, transform.rotation); newM.GetComponent <Rigidbody>().isKinematic = false; newM.GetComponent <Rigidbody>().velocity = missle.GetComponent <Rigidbody>().velocity; missle.modules.Remove(this); missle = newM.GetComponent <Missle>(); missle.inEditor = false; SyncMissleToMasterParent(missle, this); missle.Launch(true); parentModule = null; }
public Missle CreateMissle() { GameObject missle = Instantiate(misslePrefab, missleOrigin, misslePrefab.transform.rotation) as GameObject; missle.AddComponent <Missle>(); Missle m = missle.GetComponent <Missle>(); m.Instantiate(this); missleCount++; return(m); }
void SyncMissleToMasterParent(Missle m, Module start) { missle.modules.Remove(this); missle = m; missle.modules.Add(this); transform.parent = m.transform; for (int i = 0; i < childModules.Count; i++) { if (childModules[i] != start) { childModules[i].SyncMissleToMasterParent(m, start); } } }
public void Act() { string misslesList = Resources.misslesList; Console.WriteLine($"Enter The Missle Type To Add: ({misslesList})"); MissleType = Console.ReadLine().ToUpper(); while (!validation.Validate(MissleType)) { Console.WriteLine("Please enter valid missle type:"); MissleType = Console.ReadLine().ToUpper(); } Missle missle = MissleFactory.getMissle(MissleType); MissleLauncher.AddMissle(missle); }
public void ShootMissle() { Enemy enemy = GetComponent <Enemy>(); GameObject clone; if (enemy.FacingRight) { clone = Instantiate(missile, missleStartPoint.position, Quaternion.identity) as GameObject; } else { clone = Instantiate(missile, missleStartPoint.position, Quaternion.Euler(new Vector3(0f, 0f, 180f))) as GameObject; } Missle missle = clone.GetComponent <Missle>(); missle.Init(enemy); }
public void FireMissle(float offset, float OriginalAngle) { //Missle missle = Instantiate(Bullet); Missle missle = MissleSpawner.instance.getReusable(Bullet); //missle.transform.position = transform.position + offset; //missle.transform.eulerAngles = new Vector3(0, 0, Vector2.Angle(Vector2.up, direction)); //float rot_z = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; missle.transform.rotation = Quaternion.Euler(0f, 0f, OriginalAngle); missle.transform.position = missle.transform.up * offset + transform.position; missle.velocity = missle.transform.up * missleSpeed + CameraFlow.getSpeed * Vector3.up * camRatio; missle.setMissleLife(missleLife); missle.setColor(missleColor); missle.damage = damage; missle.transform.localScale = Vector3.one * bulletScale; missle.maxLifeTime = missleLifeTime; }
public void FireMissle(float offset, float OriginalAngle, Vector2 parentVelocity) { //Missle missle = Instantiate(Bullet); Missle spawnMissle = MissleSpawner.instance.getReusable(missle); //missle.transform.position = transform.position + offset; //missle.transform.eulerAngles = new Vector3(0, 0, Vector2.Angle(Vector2.up, direction)); //float rot_z = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; spawnMissle.transform.rotation = Quaternion.Euler(0f, 0f, OriginalAngle); spawnMissle.transform.position = spawnMissle.transform.up * offset + transform.position; float sp = missleSpeed > 10 ? 10 : missleSpeed; spawnMissle.velocity = (Vector2)spawnMissle.transform.up * sp + parentVelocity; spawnMissle.setMissleLife((int)bulletLife); spawnMissle.damage = damagePerBullet; spawnMissle.maxLifeTime = bulletsLifetime; }
IEnumerator spawnLoop() { while (true) { yield return(new WaitForSeconds(spawnRate)); float c = ((avgMeteors - meteorHolder.live) * chance); if (c < chance) { c = chance; } liveM = meteorHolder.live; if (Random.value < c) { Missle meteor = MissleSpawner.instance.getReusable(prefab); Vector2 spawnPoint = CameraFlow.outSideScreen(MathHelper.DegreeToVector2(Random.value * 360)); meteor.transform.position = spawnPoint; meteor.calculateProperties(); } } }
public void OnTriggerEnter2D(Collider2D collision) { if (dead) { return; } UnitLife unit = collision.GetComponentInParent <UnitLife>(); if (unit) { onHitShip(unit, collision); } else { Missle missle = collision.GetComponentInParent <Missle>(); if (missle) { if (missle.GetType() == typeof(Meteor)) { clife = 0; } clife -= missle.damage; } else { clife -= 1f; } if (clife < 0) { dead = true; } else { OnCollision(); } } }
protected override CastResult OnCast() { for (int i = 0, length = Random.Range(MissleMinCount, MissleMaxCount + 1); i < length; ++i) { if (ReleaseFX) { EffectPlayer.PlayOnTransform(ReleaseFX, ReleaseFXPoint); } if (ReleaseSE) { AudioSystem.Instance.PlayOnTransform(ReleaseSE, ReleaseFXPoint); } Missle missle = Instantiate(MisslePrefab, transform.position, transform.rotation).GetOrAddComponent <Missle>(); switch (LockType) { case SkillLockType.Position: switch (MissleType) { case Type.Bullet: missle.InitBullet(TargetPos, MissileSpeed, Settlement); break; default: missle.Init(TargetPos, MissileSpeed, Settlement); break; } break; case SkillLockType.NoLock: switch (MissleType) { case Type.Bullet: //missle.InitBullet(TargetPos, MissileSpeed, Settlement); break; default: missle.gameObject.AddComponent <SphereCollider>().isTrigger = true; missle.gameObject.AddComponent <Rigidbody>().isKinematic = true; missle.InitFlyFront(Master.transform.forward, MissileSpeed, SkillMaxRange, (hitObj, missleScript) => { if (hitObj) { InteractiveObj target = hitObj.GetComponent <InteractiveObj>(); if (target) { if (target.IsAlive && target.IsEnemy(Master.Camp)) { Settlement(target); Destroy(missleScript.gameObject); } return; } Q_SceneObj sceneObj = hitObj.GetComponent <Q_SceneObj>(); if (sceneObj) { switch (sceneObj.objType) { case Q_SceneObj.Type.Skill: case Q_SceneObj.Type.Item: case Q_SceneObj.Type.NeedItem: break; default: return; } } } if (HitFX) { EffectPlayer.PlayAtPos(HitFX, missleScript.transform.position); } if (HitSE) { AudioSystem.Instance.PlayAtPos(HitSE, missleScript.transform.position); } missleScript.Alive = false; Destroy(missleScript.gameObject); }); break; } break; default: if (Target) { missle.Init(Target.transform, MissileSpeed, (tsf) => Settlement(tsf.GetComponent <InteractiveObj>())); } else { missle.Init(TargetPos, MissileSpeed, Settlement); } break; } missle.SetLifeTime(MissleLifeTime); if (FlySE) { AudioSystem.Instance.PlayOnTransform(FlySE, missle.transform); } } return(CastResult.Success); }
public void DestroyMissle(Missle missle, bool explode = true) { _destroyed.Add(missle); }
void Update() { Enemy closestEnemy = GetClosestEnemy(); if (closestEnemy != null && barrel != null) { barrel.AimAt(closestEnemy.transform.position); } if (shootCooldownCounter > 0) { shootCooldownCounter -= Time.deltaTime; if (shootCooldownCounter < 0) { shootCooldownCounter = 0; } } else { if (autoAim) { if (closestEnemy != null && Vector2.Distance(transform.position, closestEnemy.transform.position) < 18) { RequestAutoFire(closestEnemy.transform.position); } } } if (shotQueued && shootCooldownCounter <= 0) { shotQueued = false; shootCooldownCounter = fireRate[upgradeTier]; if (!Physics2D.Raycast(projectileSpawn.position, queuedShotCrosshair - new Vector2(projectileSpawn.position.x, projectileSpawn.position.y), 40, friendlyLayers)) { switch (projectileType) { case ProjectileType.BULLET: Bullet bullet = Instantiate(bulletPrefab, projectileSpawn.position, Quaternion.identity); bullet.Initiate(queuedShotCrosshair - new Vector2(projectileSpawn.position.x, projectileSpawn.position.y), damage[upgradeTier], bulletSpeed[upgradeTier]); SoundController.PlayShoot(); break; case ProjectileType.LASER: RaycastHit2D hit = Physics2D.Raycast(projectileSpawn.position, queuedShotCrosshair - new Vector2(projectileSpawn.position.x, projectileSpawn.position.y), 40, enemyLayers); Vector2 end = Vector2.zero; SoundController.PlayLaser(); if (hit) { Enemy enemy = hit.collider.gameObject.GetComponent <Enemy>(); if (enemy != null) { enemy.Damage(damage[upgradeTier]); } end = hit.point; Laser laser = Instantiate(laserPrefab, projectileSpawn.position, Quaternion.identity); laser.Initiate(new Vector2(projectileSpawn.position.x, projectileSpawn.position.y), end); } else { end = queuedShotCrosshair - new Vector2(projectileSpawn.position.x, projectileSpawn.position.y); end.Normalize(); //max laser distance end *= 40; Laser laser = Instantiate(laserPrefab, projectileSpawn.position, Quaternion.identity); laser.Initiate(new Vector2(projectileSpawn.position.x, projectileSpawn.position.y), new Vector2(projectileSpawn.position.x, projectileSpawn.position.y) + end); } break; case ProjectileType.MISSLE: Missle missle = Instantiate(misslePrefab, projectileSpawn.position, Quaternion.identity); missle.Initiate(queuedShotCrosshair - new Vector2(projectileSpawn.position.x, projectileSpawn.position.y), new Vector2(projectileSpawn.position.x, projectileSpawn.position.y), queuedShotCrosshair, damage[upgradeTier], bulletSpeed[upgradeTier], explosionRadius[upgradeTier]); SoundController.PlayShoot(); break; } } } }
/// <summary> /// Fires a missle. /// </summary> public void FireMissle() { // Spawn a missle entity. var sprite = new StaticSprite(Vector2.One * 2.0f, m_missleTexture, "MISC_Missle", new Rectangle(4, 2, 24, 28)); var missle = new Missle(sprite); var direction = -Vector2.UnitY; direction = new Vector2( direction.X * MathCore.Cos(this.SceneNode.Rotation) + -direction.Y * MathCore.Sin(this.SceneNode.Rotation), direction.Y * MathCore.Cos(this.SceneNode.Rotation) + direction.X * MathCore.Sin(this.SceneNode.Rotation)); this.World.Add(missle); missle.Position = this.SceneNode.Position + (direction * 8.0f); missle.Rotation = this.SceneNode.Rotation; missle.Body.LinearVelocity = this.Body.LinearVelocity + (direction * 50.0f); // Play the sound. m_soundMissleLaunch.Play(); }