public UnitItemBaseCtrl GetNearestEnemy() { UnitItemBaseCtrl nearestEnemy = null; float nearestDistance = 7; for (int i = 0; i < 3; i++) { UnitItemBaseCtrl unit = this.isOurTeam ? SceneController.instance.Stage.enemyTeam[i] : SceneController.instance.Stage.ourTeam[i]; RaycastHit hit; Vector3 unitCenterPos = transform.position + new Vector3(0, 0.5f, 0); Ray ray = new Ray(unitCenterPos, _aimDirectionVector); if (Physics.Raycast(ray, out hit) && hit.transform.CompareTag("Obstacle")) { continue; } float dist = Vector3.Distance(unit.transform.position, this.transform.position); if (unit.isInsideGrass && dist > 2) { continue; } if (dist < nearestDistance) { nearestEnemy = unit; } } return(nearestEnemy); }
public void SpawnEnemyTeam() { this.enemyTeam = new UnitItemBaseCtrl[3]; for (int i = 0; i < EnemyTeamPositions.Length; i++) { UnitItemBaseCtrl unit = SceneController.instance.AddUnitItem(i, -1, this.EnemyTeamPositions[i].transform.position.x, this.EnemyTeamPositions[i].transform.position.z, false); this.enemyTeam[i] = unit; } }
private void OnTriggerEnter(Collider other) { UnitItemBaseCtrl unit = other.GetComponent <UnitItemBaseCtrl>(); if (unit != null && unit.isOurTeam != _isOurTeam) { unit.OnReceiveHit(this._hitPoints); Destroy(this.gameObject); } }
public void SpawnOurTeam() { this.ourTeam = new UnitItemBaseCtrl[3]; int randomIndex = Random.Range(0, OurTeamPositions.Length); for (int i = 0; i < OurTeamPositions.Length; i++) { UnitItemBaseCtrl unit = SceneController.instance.AddUnitItem(i, -1, this.OurTeamPositions[i].transform.position.x, this.OurTeamPositions[i].transform.position.z, true); if (i == randomIndex) { SceneController.instance.SetPlayerUnit(unit); } this.ourTeam[i] = unit; } }
private void Start() { this._parent = this.GetComponentInParent <UnitItemBaseCtrl>(); this.BottomCircle.color = this._parent.isOurTeam ? Color.green : Color.red; this.NameText.text = this._parent.playerName; if (this._parent == SceneController.instance.player) { this.EnergyFiller.color = Color.yellow; } this.NavigationCircle.gameObject.SetActive(this._parent == SceneController.instance.player); this._energyFillerDefaultColor = this.EnergyFiller.color; this._energyFillerFullWidth = this.EnergyFiller.size.x; }
public UnitItemBaseCtrl AddUnitItem(int itemIndex, int instanceId, float posX, float posZ, bool isOurTeam) { UnitItemBaseCtrl instance = Utils.CreateInstance(this.UnitItems[itemIndex], this.UnitsContainer, true).GetComponent <UnitItemBaseCtrl>(); if (instanceId == -1) { instanceId = this._GetUnusedInstanceId(); } instance.instanceId = instanceId; this._unitItemInstances.Add(instanceId, instance); instance.SetData(itemIndex, posX, posZ, isOurTeam); instance.SetState(Common.State.IDLE); return(instance); }
public void Attack() { UnitItemBaseCtrl nearestEnemy = GetNearestEnemy(); if (nearestEnemy != null) { this._aimDirectionVector = (nearestEnemy.transform.position - this.transform.position).normalized; this.LookAt(this._aimDirectionVector); } this.SetState(Common.State.ATTACK); if (Time.time - this._lastShootedTime > reloadTime) //wait one minute between { this.ShootBullet(); this._lastShootedTime = Time.time; this.StartCoroutine(_StopAttack()); } }
private void OnTriggerEnter(Collider other) { if (other.gameObject.layer != 10) //Layer 10 - GrassDetector { return; } UnitItemBaseCtrl unit = other.GetComponentInParent <UnitItemBaseCtrl>(); if (unit != null) { if (unit.isOurTeam) { _unitsCountInsideGrass++; this._Refresh(); } unit.OnUnitEnterGrass(); } }
private void OnTriggerExit(Collider other) { if (other.gameObject.layer != 10) { return; } UnitItemBaseCtrl unit = other.GetComponentInParent <UnitItemBaseCtrl>(); if (unit != null) { if (unit.isOurTeam) { _unitsCountInsideGrass--; this._Refresh(); } unit.OnUnitExitGrass(); } }
public void FindTarget() { int randomIndex = Random.Range(0, 3); this._targetUnit = this._parent.GetNearestEnemy(); if (this._targetUnit == null) { this._targetPosition = SceneController.instance.Stage.GrassPositions[Random.Range(0, SceneController.instance.Stage.GrassPositions.Length)].transform.position; } else { this._targetPosition = this._targetUnit.transform.position; } this._moveVector = (this._targetPosition - this.transform.position).normalized; this._targetFound = true; this.StartCoroutine(_RepeatFindTargetAfterAWhile()); }
public void SetPlayerUnit(UnitItemBaseCtrl unit) { this.player = unit; CameraController.instance.target = this.player.transform; unit.aiHelper.enabled = false; }
void Start() { this._parent = this.GetComponentInParent <UnitItemBaseCtrl>(); this._targetFound = false; }