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); }
public SpaceShipData[] GetSourceSpaceShipDatas() { // TEMP //if (m_sourceSpaceShips.Count < (int)MobType.End) //{ // Debug.LogError("The sourc turrets is less than Turret.End"); // return null; //} SpaceShipData[] datas = new SpaceShipData[(int)MobType.End]; for (int i = 0; i < (int)MobType.End; ++i) { string key = EnumToStr((MobType)i); GameObject source = null; if (false == m_sourceSpaceShips.TryGetValue(key, out source)) { datas[i] = null; continue; } SpaceShipCtrl ctrl = source.GetComponent <SpaceShipCtrl>(); datas[i] = ctrl.SpaceShipData; } return(datas); }
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 Gunner FindBossTargetInList(GameObject[] spaceShipList, float refAngle, float fanAngle, Vector3 from, float minDist) { if (spaceShipList == null) { return(null); } float halfAngle = fanAngle * 0.5f; 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.SpaceShipType == MobType.ZombieShip || ctrl.SpaceShipType == MobType.BattleShip || ctrl.SpaceShipType == MobType.GhostShip) { return(ctrl); } } } else { if (refAngle - halfAngle <= ctrl.AngleFromPlanetUp && refAngle + halfAngle > ctrl.AngleFromPlanetUp) { if (ctrl.SpaceShipType == MobType.ZombieShip || ctrl.SpaceShipType == MobType.BattleShip || ctrl.SpaceShipType == MobType.GhostShip) { return(ctrl); } } } } return(null); }
private void CreateSpaceShip(GameObject source, Vector3 pos, Quaternion angle, Transform parentTrsf, int num, SpaceShipCtrl.STATE state = SpaceShipCtrl.STATE.FALLING) { GameObject obj = null; SpaceShipCtrl ctrl = null; obj = Instantiate(source, pos, angle, parentTrsf); obj.GetComponent <SpriteRenderer>().sortingOrder = num; ctrl = obj.GetComponent <SpaceShipCtrl>(); ctrl.BulletPoolIdx = m_createdSpaceShipCnt; ctrl.Clone = true; ctrl.FirstState = state; m_createdSpaceShipCnt += 1; }
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); }
public void UpdateSpaceShipDatas() { GameObject[] dummyList = GameObject.FindGameObjectsWithTag("SPACESHIP_DUMMY"); foreach (GameObject dummy in dummyList) { SpaceShipCtrl ctrl = dummy.GetComponent <SpaceShipCtrl>(); ctrl.UpdateSpaceShipData(); } GameObject[] normalList = GameObject.FindGameObjectsWithTag("SPACESHIP_NORMAL"); foreach (GameObject normal in normalList) { SpaceShipCtrl ctrl = normal.GetComponent <SpaceShipCtrl>(); ctrl.UpdateSpaceShipData(); } }
protected override void _OnTarget(Gunner target, Vector3 hitPos) { SpaceShipCtrl _target = target as SpaceShipCtrl; if (_target != null) { if (_target.SpaceShipType == MobType.ZombieShip || _target.SpaceShipType == MobType.BattleShip || _target.SpaceShipType == MobType.GhostShip) { PlayEffect(m_effect_explosion, hitPos); target.Hit(m_damage * m_damageScaleToKing); gameObject.SetActive(false); } else { base._OnTarget(target, hitPos); } } else { base._OnTarget(target, hitPos); } }