示例#1
0
    protected override void OnUpdate()
    {
        EnemyComponent currEnemy = null;

        BaseEnemyConfig currEnemyConfig = null;

        WaypointComponent currWaypoint = null;

        float currSpeed = 0.0f;

        float deltaTime = Time.deltaTime;

        Transform enemyTransform    = null;
        Transform waypointTransform = null;

        Vector3 dir;

        float distance = 0.0f;

        foreach (var entity in GetEntities <TEnemyGroup>())
        {
            currEnemy       = entity.mEnemy;
            currEnemyConfig = currEnemy.mConfigs;
            currWaypoint    = currEnemy.mCurrWaypoint;

            currSpeed = currEnemyConfig.mSpeed * deltaTime;

            enemyTransform    = currEnemy.CachedTransform;
            waypointTransform = currWaypoint.CachedTransform;

            /// until the enemy doesn't reach the waypoint update its position
            dir = waypointTransform.position - enemyTransform.position;

            distance = dir.magnitude;

            dir.Normalize();

            /// rotate an enemy along its move direction
            enemyTransform.rotation = Quaternion.RotateTowards(enemyTransform.rotation, QuaternionUtils.LookRotationXZ(dir), currEnemyConfig.mRotationSpeed * deltaTime);

            if (distance > 0.1f)             /// epsilon
            {
                enemyTransform.position += dir * currSpeed;

                continue;
            }

            if (currWaypoint.mNextWaypoint != null)
            {
                currEnemy.mCurrWaypoint = currWaypoint.mNextWaypoint;
            }
        }
    }
示例#2
0
#pragma warning restore 0649

    private void Awake()
    {
        if (waypointComponent == null)
        {
            waypointComponent = GetComponentInParent <WaypointComponent>();
        }

        if (waypointComponent == null)
        {
            return;
        }

        _waypoints = waypointComponent.GetNavigator();
        _waypoints.Select(startAtWaypoint);
        transform.position = _waypoints.Current;
    }
示例#3
0
    protected void _spawnNewEnemy(GameObject enemyPrefab, Vector3 position, WaypointComponent startWaypoint)
    {
        GameObject instantiatedEnemy = GameObject.Instantiate(enemyPrefab, position, Quaternion.identity, mEnemiesRootTransform);

        EnemyComponent enemyComponent = instantiatedEnemy.GetComponent <EnemyComponent>();

        if (enemyComponent == null)
        {
            return;
        }

        /// copy shared values into individual fields
        enemyComponent.mHealth       = enemyComponent.mConfigs.mHealth;
        enemyComponent.mCurrWaypoint = startWaypoint;

        /// update enemy's UI
        HealthBarView healthBarView = enemyComponent.GetComponentInChildren <HealthBarView>();

        healthBarView.CurrNormalizedHealth = 1.0f;
    }
    private void Update()
    {
        RaycastHit[] hits = Physics.RaycastAll(mainCamera.ScreenPointToRay(Input.mousePosition), 1000.0f, mainCamMask);
        mainHitList.Clear();
        if (hits.Length > 0)
        {
            foreach (RaycastHit curHit in hits)
            {
                mainHitList.Add(curHit.collider);
            }
        }

        hits = Physics.RaycastAll(miniMapCamera.ScreenPointToRay(Input.mousePosition), 1000.0f, miniMapCamMask);

        ClearText(hits);
        miniMapHitList.Clear();
        if (hits.Length > 0)
        {
            foreach (RaycastHit curHit in hits)
            {
                miniMapHitList.Add(curHit.collider);
            }

            foreach (Collider curCol in miniMapHitList)
            {
                UI_DisplayText displayTextRef = curCol.gameObject.GetComponent <UI_DisplayText>();
                if (displayTextRef != null)
                {
                    displayTextRef.DisplayText();
                }
            }
        }

        /*hits = Physics.RaycastAll (UICamera.ScreenPointToRay (Input.mousePosition));
         * uiHitList.Clear();
         * if(hits.Length > 0)
         * {
         *      foreach (RaycastHit curHit in hits)
         *              uiHitList.Add(curHit.collider);
         * }*/

        if (Input.GetMouseButtonDown(0))
        {
            Collider waypoint = miniMapHitList.Find(mmh => mmh.CompareTag("Waypoint"));
            if (waypoint != null)
            {
                miniMapHitList.Remove(waypoint.GetComponent <Collider>());
                Destroy(waypoint.gameObject);
                return;
            }

            foreach (Collider curCol in miniMapHitList)
            {
                WaypointComponent waypointRef = curCol.gameObject.GetComponent <WaypointComponent>();
                if (waypointRef != null)
                {
                    if (WaypointComponent.currentWaypoint != null)
                    {
                        waypointRef.DestroyWaypoint();
                    }

                    waypointRef.CreateWaypoint();
                    break;
                }
            }
        }
    }