コード例 #1
0
ファイル: UnitItemBaseCtrl.cs プロジェクト: adom5217/hxbapp
    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);
    }
コード例 #2
0
    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;
        }
    }
コード例 #3
0
ファイル: BulletCtrl.cs プロジェクト: adom5217/hxbapp
    private void OnTriggerEnter(Collider other)
    {
        UnitItemBaseCtrl unit = other.GetComponent <UnitItemBaseCtrl>();

        if (unit != null && unit.isOurTeam != _isOurTeam)
        {
            unit.OnReceiveHit(this._hitPoints);
            Destroy(this.gameObject);
        }
    }
コード例 #4
0
    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;
        }
    }
コード例 #5
0
    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;
    }
コード例 #6
0
    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);
    }
コード例 #7
0
ファイル: UnitItemBaseCtrl.cs プロジェクト: adom5217/hxbapp
    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());
        }
    }
コード例 #8
0
ファイル: GrassItemCtrl.cs プロジェクト: adom5217/hxbapp
    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();
        }
    }
コード例 #9
0
ファイル: GrassItemCtrl.cs プロジェクト: adom5217/hxbapp
    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();
        }
    }
コード例 #10
0
    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());
    }
コード例 #11
0
 public void SetPlayerUnit(UnitItemBaseCtrl unit)
 {
     this.player = unit;
     CameraController.instance.target = this.player.transform;
     unit.aiHelper.enabled            = false;
 }
コード例 #12
0
 void Start()
 {
     this._parent      = this.GetComponentInParent <UnitItemBaseCtrl>();
     this._targetFound = false;
 }