public Character CreateNewCharacter() { Console.WriteLine("What kind of character would you like to create?"); Console.WriteLine("1. FastRunner"); Console.WriteLine("2. Gunner"); Console.WriteLine("3. HeavyHitter"); string choice = Console.ReadLine(); Character character = new Character(); switch (choice) { case "1": character = new FastRunner(); break; case "2": character = new Gunner(); break; case "3": character = new HeavyHitter(); break; } return(character); }
protected override void _OnTarget(Gunner target, Vector3 hitPos) { RaycastHit2D[] hits = Physics2D.CircleCastAll(m_trsf.position, m_splashRadius, Vector2.zero); foreach (RaycastHit2D hit in hits) { if (hit.collider.gameObject == gameObject) { continue; } if (hit.collider.tag == "SPACESHIP_NORMAL") { SpaceShipCtrl ctrl = hit.collider.gameObject.GetComponent <SpaceShipCtrl>(); ctrl.Hit(m_splashDamage); PlayEffect(m_effect_explosion, ctrl.Position); } else if (hit.collider.tag == "SPACESHIP_DUMMY") { SpaceShipCtrl ctrl = hit.collider.gameObject.GetComponent <SpaceShipCtrl>(); ctrl.Hit(m_splashDamage); PlayEffect(m_effect_explosion, ctrl.Position); } } base._OnTarget(target, hitPos); }
float GetRange(Vector2 dir) { float range = m_MaxRange; List <RaycastHit2D> results = new List <RaycastHit2D>(); int numHit = Physics2D.Raycast(transform.position, dir, m_ContactFilter, results); if (numHit > 0) { foreach (RaycastHit2D hit in results) { int hitLayer = hit.transform.gameObject.layer; int hitPower = (int)Mathf.Pow(2, hitLayer); if (hitPower == m_PlatformLayer) { range = hit.distance; break; } else if ((hitPower & (int)m_GunnerLayer) == (int)hitPower) { Gunner g = hit.transform.GetComponent <Gunner>(); if (g && g.Friendly == m_Friendly) { continue; } g.Damage(m_Damage, dir.normalized * m_Knockback); } } } return(range); }
// Update is called once per frame void OnCollisionEnter2D(Collision2D hitInfo) { //Debug.Log(hitInfo.collider.gameObject.layer); if ( hitInfo.collider.gameObject.layer == 12 || hitInfo.collider.gameObject.layer == 9 ) { return; } Gunner gunner = hitInfo.collider.GetComponent <Gunner>(); if (gunner != null) { gunner.TakeDamage(dmg); } Runner runner = hitInfo.collider.GetComponent <Runner>(); if (runner != null) { runner.TakeDamage(dmg); } Defender defender = hitInfo.collider.GetComponent <Defender>(); if (defender != null) { defender.TakeDamage(dmg); } Instantiate(afterObject, transform.position, transform.rotation); Destroy(gameObject); }
private void OnTriggerStay2D(Collider2D collision) { Vector2 dir = collision.transform.position - transform.position; Gunner g = collision.GetComponent <Gunner>(); if (g) { if (g.Friendly == m_Friendly) { return; } g.Push(transform.right * m_Knockback * Strength); } Bullet b = collision.GetComponent <Bullet>(); if (b) { if (b.Friendly == m_Friendly) { return; } b.RigidBody.AddForce(dir.normalized * m_Knockback, ForceMode2D.Impulse); } }
private void Start() { lr = GetComponentInChildren <LineRenderer>(); npcManager = GameObject.FindGameObjectWithTag("GameManager").GetComponent <NPCManager>(); switch (myClasse) { case classe.GUNNER: { Alliee a = new Gunner(gameObject, npcManager); npcManager.AddAlliee(a); me = a; break; } case classe.SNIPER: { Alliee a = new Sniper(gameObject, npcManager); npcManager.AddAlliee(a); me = a; break; } case classe.SPECIALIST: { Alliee a = new Specialist(gameObject, npcManager); npcManager.AddAlliee(a); me = a; break; } case classe.CANNONFODDER: { Ennemy e = new CannonFodder(gameObject, npcManager); npcManager.AddEnnemy(e); me = e; break; } case classe.RUNNER: { Ennemy e = new Runner(gameObject, npcManager); npcManager.AddEnnemy(e); me = e; break; } case classe.BOSS: { Ennemy e = new Boss(gameObject, npcManager); npcManager.AddEnnemy(e); me = e; break; } default: throw new System.ArgumentException("Invalid classe."); } rb = GetComponent <Rigidbody>(); }
protected override void CreateBullet() { Gunner target = null; target = SpaceShipMgr.Inst.FindMinHPTargetInFan(m_planetAngle, m_fanAngle, m_trsf.position, m_minDistToAttack); BulletMgr.Inst.FireBullet(m_bulletPool, BulletPoolIdx, m_trsf.position + m_trsf.up * m_fireDistAlignUp, m_trsf.localEulerAngles, this, target); }
private Gunner FindMinHPTargetInList(GameObject[] spaceShipList, float refAngle, float fanAngle, Vector3 from, float minDist) { if (spaceShipList == null) { return(null); } float halfAngle = fanAngle * 0.5f; float minHP = float.MaxValue; Gunner targetCtrl = null; foreach (GameObject spcShip in spaceShipList) { SpaceShipCtrl ctrl = spcShip.GetComponent <SpaceShipCtrl>(); if ((ctrl.Position - from).magnitude < minDist) { continue; } SpaceShip_GhostCtrl ghost = ctrl as SpaceShip_GhostCtrl; if (ghost != null) { if (ghost.Visible == false) { continue; } } if (refAngle == 0) { if (0 <= ctrl.AngleFromPlanetUp && (halfAngle > ctrl.AngleFromPlanetUp || 360f - halfAngle < ctrl.AngleFromPlanetUp)) { if (ctrl.CurHP < minHP) { targetCtrl = ctrl; minHP = ctrl.CurHP; } } } else { if (refAngle - halfAngle <= ctrl.AngleFromPlanetUp && refAngle + halfAngle > ctrl.AngleFromPlanetUp) { if (ctrl.CurHP < minHP) { targetCtrl = ctrl; minHP = ctrl.CurHP; } } } } return(targetCtrl); }
private void Gunner2_Click(object sender, RoutedEventArgs e) { //MessageBox.Show("Gunner"); this.Hide(); Gunner gunner = new Gunner(); gunner.ShowDialog(); this.Show(); }
// Use this for initialization void Start() { _animator = GetComponent <Animator>(); _rigidbody2D = GetComponent <Rigidbody2D>(); _audio = GetComponent <AudioSource>(); _gun = GetComponentInChildren <Gunner>(); _lastShootTimer = ShootCooldown; CanMove = true; }
public void SetAmmoInfinite() { ammoToggle = true; Gunner gunner = playerRef as Gunner; if (gunner != null) { gunner.SetInfiniteAmmo(true); } }
public void RemoveInfiniteAmmo() { ammoToggle = false; Gunner gunner = playerRef as Gunner; if (gunner != null) { gunner.SetInfiniteAmmo(false); } }
public void ToggleInfiniteAmmoCommand() { ammoToggle = !ammoToggle; Gunner gunner = playerRef as Gunner; if (gunner != null) { gunner.SetInfiniteAmmo(ammoToggle); } }
protected override void _OnTarget(Gunner target, Vector3 hitPos) { float rand = Random.Range(0, 1); if (rand <= m_probability) { target.Hit_Dot(m_dotInfo); } base._OnTarget(target, hitPos); }
public void InitiallyShootingTacticsIsRandomAsLongAsFirstSquareIsHit() { int[] shipLenghts = new int[] { 1, 2, 3 }; Gunner g = new Gunner(6, 6, shipLenghts); Assert.AreEqual(ShootingTactics.Random, g.ShootingTactics); g.NextTarget(); g.ProcessHitResult(HitResult.Missed); Assert.AreEqual(ShootingTactics.Random, g.ShootingTactics); }
public override void Init() { base.Init(); gunner = transform.parent.GetComponent <Gunner>(); targetLayer = 1 << LayerMask.NameToLayer("Enemy"); myPos = new Vector2(transform.position.x, transform.position.y); rangeCheckSize = new Vector2(range, range); centerPos = new Vector2(0, 0); targetCheckSize = new Vector2(100, 100); orginRot = transform.rotation; }
public void SwapToCommander(Gunner currentRole) { Commander targetRole = player.GetComponent <Commander>(); targetRole.playerID = currentRole.playerID; currentRole.playerID = commander; commander = targetRole.playerID; gunner = currentRole.playerID; SwapPanels(currentRole.gunnerPanel, targetRole.commanderPanel); }
public void Fire(Vector3 startPos, Vector3 startAngle, Gunner shooter, Gunner target) { if (m_trsf == null) { m_trsf = GetComponent <Transform>(); } m_trsf.position = startPos; m_trsf.localEulerAngles = startAngle; m_target = target; //m_shooter = shooter; }
public void SwapToDriver(Gunner currentRole) { Driver targetRole = player.GetComponent <Driver>(); targetRole.playerID = currentRole.playerID; currentRole.playerID = driver; driver = targetRole.playerID; gunner = currentRole.playerID; SwapPanels(currentRole.gunnerPanel, targetRole.driverPanel); }
private void OnTriggerEnter(Collider other) { Gunner player = other.GetComponent <Gunner>(); if (firstTime && player && !hasBeenEnabled) { currentPlayer = player; hasBeenEnabled = true; player.SetInfiniteAmmo(true); print("Player has infinite ammo."); } }
public void SwapToEngineer(Gunner currentRole) { Engineer targetRole = player.GetComponent <Engineer>(); targetRole.playerID = currentRole.playerID; currentRole.playerID = engineer; engineer = targetRole.playerID; gunner = currentRole.playerID; SwapPanels(currentRole.gunnerPanel, targetRole.engineerPanel); }
private void Awake() { playerHookup = FindObjectOfType <PlayerBase>(); healthBarUI = GetComponent <HealthBar>(); gunnerHookup = FindObjectOfType <Gunner>(); gunnerPrimaryFireHookup = gunnerHookup.GetComponent <GunnerPrimaryFire>(); gunnerDOTGrenadeHookup = gunnerHookup.GetComponent <GunnerDOTGrenade>(); gunnerGrenadeHookup = gunnerHookup.GetComponent <GunnerGrenade>(); gunnerSecondaryFireHookup = gunnerHookup.GetComponent <GunnerAltFire>(); }
private void Awake() { // currently a singleton, but can change if there can be more than one gunner if (instance == null) { instance = this; input = new Vector2(0, 0); } else { Debug.LogError("Cannot create more than one gunner object because it is a singleton."); } }
protected override void CreateBullet() { Gunner target = null; target = SpaceShipMgr.Inst.FindFirstTargetInFan(m_planetAngle, m_fanAngle, m_trsf.position, m_minDistToAttack); if (target != null) { AudioManager.Inst.playBulletSFX(m_trsf.position, m_blasterSound); } BulletMgr.Inst.FireBullet(m_bulletPool, BulletPoolIdx, m_trsf.position + m_trsf.up * m_fireDistAlignUp, m_trsf.localEulerAngles, this, target); }
public void ShootingTacticsChangesFromSurroundingToLinegAfterSecondSquareIsHit() { int[] shipLengths = new int[] { 1, 2, 3 }; Gunner g = new Gunner(6, 6, shipLengths); Assert.AreEqual(ShootingTactics.Random, g.ShootingTactics); g.NextTarget(); g.ProcessHitResult(HitResult.Hit); Assert.AreEqual(ShootingTactics.Surrounding, g.ShootingTactics); g.NextTarget(); g.ProcessHitResult(HitResult.Hit); Assert.AreEqual(ShootingTactics.Inline, g.ShootingTactics); }
public void ShootingTacticsChangesFromRandomToSurroundiungAfterFirstSquareIsHit() { int[] shipLenghts = new int[] { 1, 2, 3 }; Gunner g = new Gunner(6, 6, shipLenghts); Assert.AreEqual(ShootingTactics.Random, g.ShootingTactics); g.NextTarget(); g.ProcessHitResult(HitResult.Hit); Assert.AreEqual(ShootingTactics.Surrounding, g.ShootingTactics); g.NextTarget(); g.ProcessHitResult(HitResult.Missed); Assert.AreEqual(ShootingTactics.Surrounding, g.ShootingTactics); }
private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.tag == "SHIELD") { if (m_target is TurretCtrl) { Gunner shield = TurretMgr.Inst.FindShieldTurret(m_target.BulletPoolIdx); // TurretCtrl 의 BulletPoolIdx 는 터렛 지지대의 인덱스이다. if (shield) { m_target = shield; _OnShield(m_target, m_trsf.position); } } } }
protected override void OnTriggerEnter2D(Collider2D collision) { Vector2 dir = collision.transform.position - transform.position; Gunner g = collision.GetComponent <Gunner>(); if (g) { if (g.Friendly == m_Friendly) { return; } g.Damage(m_Damage, dir.normalized * m_Knockback); } }
private void OnTriggerExit(Collider other) { Gunner player = other.GetComponent <Gunner>(); if (player && Time.timeScale >= 1) { firstTime = false; currentPlayer = player; player.SetInfiniteAmmo(false); print("Player does not have infinite ammo."); oreVein.isInfinite = false; oreInteractUI.SetActive(false); tutorialPrompt.SetActive(false); gameObject.SetActive(false); } }
protected override void _OnTarget(Gunner target, Vector3 hitPos) { SpaceShipCtrl spaceShip = target as SpaceShipCtrl; if (spaceShip != null) { float rand = Random.Range(0, 1); if (rand <= m_probability) { target.StopFire(m_duration); } } base._OnTarget(target, hitPos); }