コード例 #1
0
        private static void SetupCamera(LevelStage levelStage, GameModeBaseConfig gameMode, GameLevelGridModel levelGridModel,
                                        IPlayer defaultPlayer)
        {
            // Camera setup and follow
            var mainCamera = Camera.main;

            if (mainCamera == null)
            {
                return;
            }

            var playerPosition = defaultPlayer.Hero.WorldPosition.xy;
            var levelSize      = levelGridModel.Size;

            var levelConfig = gameMode.LevelConfigs[levelStage.LevelIndex];

            var cameraRect = math.float2(Screen.width * 2f / Screen.height, 1) * mainCamera.orthographicSize;

            var fieldRect    = (levelSize - cameraRect) / 2f;
            var fieldMargins = (float4)levelConfig.ViewportPadding / levelConfig.OriginalPixelsPerUnits;

            var position = math.clamp(playerPosition, fieldMargins.xy - fieldRect, fieldRect + fieldMargins.zw);

            mainCamera.transform.position = math.float3(position, -1);
        }
コード例 #2
0
 private static LevelStageConfig GetLevelStageConfig(GameModeBaseConfig gameMode, LevelStage levelStage)
 {
     return(gameMode.LevelConfigs[levelStage.LevelIndex].LevelStages[levelStage.LevelStageIndex]);
 }