78 lines
4.7 KiB
C#
78 lines
4.7 KiB
C#
using UnityEngine;
|
|
|
|
namespace WL.Player
|
|
{
|
|
/// <summary>
|
|
/// 플레이어 이동/기상 시퀀스에 쓰이는 모든 수치의 단일 출처(SOT).
|
|
/// 코드 상수 금지(조직 규칙 C45) — 모든 값은 이 에셋에서 읽는다.
|
|
/// 에셋 경로: Assets/WL/Settings/PlayerMoveSettings.asset
|
|
/// </summary>
|
|
[CreateAssetMenu(fileName = "PlayerMoveSettings", menuName = "WL/Player Move Settings")]
|
|
public class PlayerMoveSettings : ScriptableObject
|
|
{
|
|
[Header("이동 속도 (m/s)")]
|
|
[Tooltip("걷기 속도")]
|
|
public float walkSpeed = 2.2f;
|
|
[Tooltip("달리기(Sprint) 속도")]
|
|
public float runSpeed = 5.5f;
|
|
[Tooltip("목표 속도까지 가속하는 데 걸리는 대략적 시간(초). 작을수록 즉각적")]
|
|
public float speedSmoothTime = 0.12f;
|
|
[Tooltip("공격(콤보) 중 이동 입력이 있을 때 이동 속도에 곱하는 비율(0~1). 전신 공격 클립이 재생되는 동안 미끄러져 보이지 않게 이동 거리를 줄인다 · PD #734 · 임시 0.3")]
|
|
[Range(0f, 1f)] public float attackMoveSpeedRatio = 0.3f;
|
|
|
|
[Header("회전")]
|
|
[Tooltip("진행 방향으로 돌아서는 데 걸리는 대략적 시간(초)")]
|
|
public float rotationSmoothTime = 0.10f;
|
|
|
|
[Header("중력 / 점프")]
|
|
[Tooltip("중력 가속도(음수)")]
|
|
public float gravity = -19.62f;
|
|
[Tooltip("지면에 붙어 있을 때 유지하는 아래 방향 속도(음수). 경사면 미끄러짐 방지")]
|
|
public float groundedStickVelocity = -2.0f;
|
|
[Tooltip("점프 최고 높이(m). 0이면 점프 비활성")]
|
|
public float jumpHeight = 1.1f;
|
|
[Tooltip("낙하 속도 상한(음수)")]
|
|
public float terminalVelocity = -50f;
|
|
|
|
[Header("기상(GetUp) 시퀀스")]
|
|
[Tooltip("씬 시작 후 쓰러진 자세를 유지하는 시간(초)")]
|
|
public float downHoldSeconds = 0.8f;
|
|
[Tooltip("GetUp 상태 길이를 Animator에서 못 읽었을 때 사용하는 대체 재생 시간(초)")]
|
|
public float getUpFallbackDuration = 1.7f;
|
|
[Tooltip("GetUp이 어떤 이유로도 끝나지 않을 때 강제로 조작을 여는 상한 시간(초)")]
|
|
public float getUpTimeoutSeconds = 6.0f;
|
|
[Tooltip("GetUp -> Locomotion 크로스페이드 시간(초)")]
|
|
public float getUpToLocomotionBlend = 0.15f;
|
|
[Tooltip("【미사용 · PD #705 ②】 기상 후 Cry 단계를 제거해 현재 시퀀스는 이 값을 읽지 않는다. 복구용으로 보존")]
|
|
public float crySeconds = 1.0f;
|
|
[Tooltip("【미사용 · PD #705 ②】 GetUp -> Cry 크로스페이드 시간(초)")]
|
|
public float getUpToCryBlend = 0.12f;
|
|
[Tooltip("Down 상태를 잡아 둘 정규화 시각. 98_Damage LyingFront 는 전 구간이 엎드린 자세라 0 으로 둔다")]
|
|
[Range(0f, 1f)] public float downFreezeNormalizedTime = 0f;
|
|
|
|
[Header("수영 (PD #704 범위확정 1 · 50_Adventure 세트 · 임시)")]
|
|
[Tooltip("수면보다 이만큼 아래로 내려가면 수영 상태로 전환한다(m) · 임시 0.9 = 허리 깊이")]
|
|
public float swimEnterDepth = 0.9f;
|
|
[Tooltip("수면 기준 깊이가 이 값보다 얕아지면 수영을 끝내고 이동으로 돌아간다(m). 경계 깜빡임 방지용으로 진입값보다 작게 둔다 · 임시 0.55")]
|
|
public float swimExitDepth = 0.55f;
|
|
[Tooltip("수영 중 이동 속도(m/s) · 임시 1.8")]
|
|
public float swimSpeed = 1.8f;
|
|
[Tooltip("수영 중 발 위치를 수면보다 이만큼 아래로 유지한다(m) · 임시 1.15")]
|
|
public float swimSurfaceSubmerge = 1.15f;
|
|
[Tooltip("수면 높이를 따라가는 속도(m/s). 클수록 즉시 붙는다 · 임시 6")]
|
|
public float swimSurfaceFollowSpeed = 6f;
|
|
[Tooltip("이동 <-> 수영 크로스페이드 시간(초) · 임시 0.18")]
|
|
public float swimBlendTime = 0.18f;
|
|
|
|
[Header("애니메이터 블렌드")]
|
|
[Tooltip("블렌드 트리에서 Walk 클립이 놓인 임계값(Idle=0, Run=1)")]
|
|
[Range(0f, 1f)] public float walkBlendThreshold = 0.5f;
|
|
[Tooltip("Speed 파라미터 감쇠 시간(초)")]
|
|
public float animatorDampTime = 0.10f;
|
|
[Tooltip("정지 시 Locomotion 블렌드를 0(Idle)까지 확실히 끌어내리는 시간(초). 감쇠만 쓰면 0 에 도달하지 않아 걷기 모션이 남는다 · PD #715 ③ · 임시 0.15")]
|
|
public float idleSnapSeconds = 0.15f;
|
|
[Tooltip("무입력·무전투가 이 시간(초) 이어지면 대기 변형 모션을 1회 재생한다. 0 이면 끔 · PD #715 ③ · 임시 8")]
|
|
public float idleVariationSeconds = 8f;
|
|
}
|
|
}
|