コード例 #1
0
ファイル: EnemySpawner.cs プロジェクト: bluTomer/CircleCube
    public void StartSpawning(BaseEnemyConfig enemyConfig, BaseColorConfig colorConfig)
    {
        _enemyConfig = enemyConfig;
        _colorConfig = colorConfig;

        _isSpawning = true;
    }
コード例 #2
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;
            }
        }
    }