diff --git a/Assets/01_Scenes/Hischool_Chapter1.unity b/Assets/01_Scenes/Hischool_Chapter1.unity index 5cc76c02..dd9ffc8c 100644 --- a/Assets/01_Scenes/Hischool_Chapter1.unity +++ b/Assets/01_Scenes/Hischool_Chapter1.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86ccee1476f6e1cacc013810bded30ec0057bdcd95ce8a7d1d691c0cefb3a2f0 -size 4122205 +oid sha256:965fe46f954100726c434f96d8a79c79209a1936ebfc29b2ae67409b714446a3 +size 4122832 diff --git a/Assets/02_Scripts/Controller/NPCController.cs b/Assets/02_Scripts/Controller/NPCController.cs index fc31162d..e2c358b1 100644 --- a/Assets/02_Scripts/Controller/NPCController.cs +++ b/Assets/02_Scripts/Controller/NPCController.cs @@ -5,11 +5,22 @@ public class NPCController : MonoBehaviour private Animator _anim; [SerializeField] private int _defaultAnimNo; + private static readonly int _speedHash = Animator.StringToHash("Speed"); + + private Vector3 _lastPosition; + private float _smoothedSpeed; + private void Awake() { _anim = GetComponent(); } + private void OnEnable() + { + _lastPosition = transform.position; + _smoothedSpeed = 0f; + } + public void SetAnimState(int animNo) { _anim.SetFloat("AnimNo", (float)animNo); @@ -19,4 +30,21 @@ public void SetDefaultAnimState() { SetAnimState(_defaultAnimNo); } + + // 이동 속도를 재서 Animator의 "Speed" 파라미터로 넘긴다 (블렌드 트리용). + // 속도는 위치 변화량으로 직접 잰다 — Rigidbody가 있어도 kinematic + 트랜스폼 직접 이동(타임라인)은 + // 물리를 안 거쳐서 linearVelocity가 항상 0이기 때문. 타임라인이 위치를 쓴 뒤인 LateUpdate에서 잰다. + private void LateUpdate() + { + if (Time.deltaTime <= 0f) return; + + // 수평 이동 속도 (m/s) + Vector3 delta = transform.position - _lastPosition; + delta.y = 0f; + _lastPosition = transform.position; + + // 프레임 편차로 인한 떨림 방지용 스무딩 + _smoothedSpeed = Mathf.Lerp(_smoothedSpeed, delta.magnitude / Time.deltaTime, 10f * Time.deltaTime); + _anim.SetFloat(_speedHash, _smoothedSpeed); + } } diff --git a/Assets/04_Models/Characters/Real Dinosaurs/Carnotaurus/carn_Chapter1.controller b/Assets/04_Models/Characters/Real Dinosaurs/Carnotaurus/carn_Chapter1.controller index fbce55d1..03429d06 100644 --- a/Assets/04_Models/Characters/Real Dinosaurs/Carnotaurus/carn_Chapter1.controller +++ b/Assets/04_Models/Characters/Real Dinosaurs/Carnotaurus/carn_Chapter1.controller @@ -43,17 +43,25 @@ BlendTree: m_DirectBlendParameter: Turn m_Mirror: 0 - serializedVersion: 2 - m_Motion: {fileID: 7400000, guid: dc4eed9ea5c06794fb28cb39ac93d38d, type: 2} + m_Motion: {fileID: 7400050, guid: 3a76ebca0d7213f44b4079b9bb53b121, type: 3} m_Threshold: 1 m_Position: {x: 0, y: 0} m_TimeScale: 1 m_CycleOffset: 0 + m_DirectBlendParameter: AnimNo + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: dc4eed9ea5c06794fb28cb39ac93d38d, type: 2} + m_Threshold: 2 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 m_DirectBlendParameter: Turn m_Mirror: 0 m_BlendParameter: AnimNo m_BlendParameterY: Turn m_MinThreshold: 0 - m_MaxThreshold: 1 + m_MaxThreshold: 2 m_UseAutomaticThresholds: 0 m_NormalizedBlendValues: 0 m_BlendType: 0 diff --git a/Assets/04_Models/Door.meta b/Assets/04_Models/Characters/Yuna_V3/Animations.meta similarity index 77% rename from Assets/04_Models/Door.meta rename to Assets/04_Models/Characters/Yuna_V3/Animations.meta index 06be795e..9a000a78 100644 --- a/Assets/04_Models/Door.meta +++ b/Assets/04_Models/Characters/Yuna_V3/Animations.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: dd9e8bbeedef5514790bf5b4b87a1cd0 +guid: 32164002d21d2df4f8118eaffdbbf65a folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/04_Models/Characters/Yuna_V3/Animations/FeMale_Idle.anim b/Assets/04_Models/Characters/Yuna_V3/Animations/FeMale_Idle.anim new file mode 100644 index 00000000..79fb2682 --- /dev/null +++ b/Assets/04_Models/Characters/Yuna_V3/Animations/FeMale_Idle.anim @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf7c20749c5352078e5f32302a1d5b0e19687605f0e32b2cc504bdb6b832f003 +size 280303 diff --git a/Assets/04_Models/Characters/Yuna_V3/Animations/FeMale_Idle.anim.meta b/Assets/04_Models/Characters/Yuna_V3/Animations/FeMale_Idle.anim.meta new file mode 100644 index 00000000..1aaeb874 --- /dev/null +++ b/Assets/04_Models/Characters/Yuna_V3/Animations/FeMale_Idle.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5c7d539d662abb443b4a91849dcc90c1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/04_Models/Characters/Yuna_V3/Animations/FeMale_Walk.anim b/Assets/04_Models/Characters/Yuna_V3/Animations/FeMale_Walk.anim new file mode 100644 index 00000000..74016dd6 --- /dev/null +++ b/Assets/04_Models/Characters/Yuna_V3/Animations/FeMale_Walk.anim @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1977a52cc3bd3fbf8309b32ae3910327a6748426de7662ba3e6924e9fdef1fa2 +size 620128 diff --git a/Assets/04_Models/Characters/Yuna_V3/Animations/FeMale_Walk.anim.meta b/Assets/04_Models/Characters/Yuna_V3/Animations/FeMale_Walk.anim.meta new file mode 100644 index 00000000..4d9aeb31 --- /dev/null +++ b/Assets/04_Models/Characters/Yuna_V3/Animations/FeMale_Walk.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a02e95c7f33fc5f4ea1e8da0c169b1dc +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/04_Models/Characters/Yuna_V3/Animations/YunaAnimController.controller b/Assets/04_Models/Characters/Yuna_V3/Animations/YunaAnimController.controller new file mode 100644 index 00000000..322a5463 --- /dev/null +++ b/Assets/04_Models/Characters/Yuna_V3/Animations/YunaAnimController.controller @@ -0,0 +1,110 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: YunaAnimController + serializedVersion: 6 + m_AnimatorParameters: + - m_Name: Speed + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 3218860087774146351} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} + m_EvaluateTransitionsOnStart: 1 +--- !u!1102 &2828740930669295434 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Blend Tree + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 5281920114115992255} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &3218860087774146351 +AnimatorStateMachine: + serializedVersion: 7 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 2828740930669295434} + m_Position: {x: -30, y: 100, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 90, y: 360, z: 0} + m_EntryPosition: {x: -20, y: 270, z: 0} + m_ExitPosition: {x: 340, y: 360, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 2828740930669295434} +--- !u!206 &5281920114115992255 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Blend Tree + m_Childs: + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 5c7d539d662abb443b4a91849dcc90c1, type: 2} + m_Threshold: 0 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: Speed + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: a02e95c7f33fc5f4ea1e8da0c169b1dc, type: 2} + m_Threshold: 0.5 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: Speed + m_Mirror: 0 + m_BlendParameter: Speed + m_BlendParameterY: Blend + m_MinThreshold: 0 + m_MaxThreshold: 0.5 + m_UseAutomaticThresholds: 0 + m_NormalizedBlendValues: 0 + m_BlendType: 0 diff --git a/Assets/04_Models/Characters/Yuna_V3/Animations/YunaAnimController.controller.meta b/Assets/04_Models/Characters/Yuna_V3/Animations/YunaAnimController.controller.meta new file mode 100644 index 00000000..6039939b --- /dev/null +++ b/Assets/04_Models/Characters/Yuna_V3/Animations/YunaAnimController.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1124ff6cdc4a797408dde0e4cc791ebf +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: