42 lines
1.7 KiB
C#
42 lines
1.7 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Tilemaps;
|
|
|
|
namespace Platformer.Mechanics
|
|
{
|
|
/// <summary>
|
|
/// 게임 시작 시 프레임·렌더·물리 영역 기본 최적화 + One-Way Platform 자동 적용.
|
|
/// PD 지시 2026-05-07 — 스크롤 버벅임 보완 + 점프·이동 시 지형 통과(One-Way Platform).
|
|
/// </summary>
|
|
public static class GameOptimizer
|
|
{
|
|
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
|
|
static void Init()
|
|
{
|
|
Application.targetFrameRate = 60;
|
|
QualitySettings.vSyncCount = 0;
|
|
Time.fixedDeltaTime = 1f / 60f;
|
|
}
|
|
|
|
/// <summary>
|
|
/// PD 지시 2026-05-07 — 모든 TilemapCollider2D를 One-Way Platform으로 자동 변환.
|
|
/// 위에서만 착지·측면·아래 통과 = 점프 시 천장 통과 + 이동 시 측면 벽 통과 + 착지/걷기는 지면 위 머무름.
|
|
/// </summary>
|
|
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
|
|
static void SetupOneWayPlatforms()
|
|
{
|
|
var tilemapColliders = Object.FindObjectsByType<TilemapCollider2D>(FindObjectsSortMode.None);
|
|
foreach (var c in tilemapColliders)
|
|
{
|
|
c.usedByEffector = true;
|
|
var effector = c.GetComponent<PlatformEffector2D>();
|
|
if (effector == null) effector = c.gameObject.AddComponent<PlatformEffector2D>();
|
|
effector.useOneWay = true;
|
|
effector.surfaceArc = 180f;
|
|
effector.rotationalOffset = 0f;
|
|
effector.useSideFriction = false;
|
|
effector.useSideBounce = false;
|
|
}
|
|
}
|
|
}
|
|
}
|