diff --git a/.idea/.idea.Degulleo3D/.idea/inspectionProfiles/Project_Default.xml b/.idea/.idea.Degulleo3D/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 00000000..dfb35ffb
--- /dev/null
+++ b/.idea/.idea.Degulleo3D/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Assets/Editor.meta b/Assets/Editor.meta
new file mode 100644
index 00000000..d3e3b472
--- /dev/null
+++ b/Assets/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fb977eee32cc2024181234437bfb8480
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Editor/ReadOnlyDrawer.cs b/Assets/Editor/ReadOnlyDrawer.cs
new file mode 100644
index 00000000..f28e0596
--- /dev/null
+++ b/Assets/Editor/ReadOnlyDrawer.cs
@@ -0,0 +1,24 @@
+#if UNITY_EDITOR
+using UnityEngine;
+using UnityEditor;
+
+// PlayerStatsTest.ReadOnlyAttribute를 위한 에디터 속성 드로어
+[CustomPropertyDrawer(typeof(PlayerStatsTest.ReadOnlyAttribute))]
+public class ReadOnlyDrawer : PropertyDrawer
+{
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+ // 이전 GUI 활성화 상태 저장
+ bool wasEnabled = GUI.enabled;
+
+ // 필드 비활성화 (읽기 전용)
+ GUI.enabled = false;
+
+ // 속성 그리기
+ EditorGUI.PropertyField(position, property, label, true);
+
+ // GUI 활성화 상태 복원
+ GUI.enabled = wasEnabled;
+ }
+}
+#endif
\ No newline at end of file
diff --git a/Assets/Editor/ReadOnlyDrawer.cs.meta b/Assets/Editor/ReadOnlyDrawer.cs.meta
new file mode 100644
index 00000000..3f22dabf
--- /dev/null
+++ b/Assets/Editor/ReadOnlyDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: eb5079b7064e2324890f78e18dfe7a6e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/JAY.meta b/Assets/JAY.meta
new file mode 100644
index 00000000..d559e802
--- /dev/null
+++ b/Assets/JAY.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a0ba1963fb7ce5041be57eb9074619f8
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/JAY/Animation.meta b/Assets/JAY/Animation.meta
new file mode 100644
index 00000000..58c80fa7
--- /dev/null
+++ b/Assets/JAY/Animation.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 89b8be7111302d34298d8fbccefa94cc
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/JAY/Animation/Idle.anim b/Assets/JAY/Animation/Idle.anim
new file mode 100644
index 00000000..de8c6bff
--- /dev/null
+++ b/Assets/JAY/Animation/Idle.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1cfe7712cbbf2c110cdc86b98cdc77caf279bb72c06152fe70d14f31bf8f2a18
+size 1278460
diff --git a/Assets/JAY/Animation/Idle.anim.meta b/Assets/JAY/Animation/Idle.anim.meta
new file mode 100644
index 00000000..ff46cce0
--- /dev/null
+++ b/Assets/JAY/Animation/Idle.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 962d2d90bb1030b4599179cdb9e2e6c3
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/JAY/Animation/Idle_Battle.fbx b/Assets/JAY/Animation/Idle_Battle.fbx
new file mode 100644
index 00000000..1d917248
--- /dev/null
+++ b/Assets/JAY/Animation/Idle_Battle.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9eddd7bad61432f6180e13dd1d3e359110560836c5cb82bca23f8d6ddc56fd52
+size 918720
diff --git a/Assets/JAY/Animation/Idle_Battle.fbx.meta b/Assets/JAY/Animation/Idle_Battle.fbx.meta
new file mode 100644
index 00000000..2a3de7ac
--- /dev/null
+++ b/Assets/JAY/Animation/Idle_Battle.fbx.meta
@@ -0,0 +1,749 @@
+fileFormatVersion: 2
+guid: 594f1161bd9cdf84a8471ede0680f194
+ModelImporter:
+ serializedVersion: 19301
+ internalIDToNameTable:
+ - first:
+ 74: 1827226128182048838
+ second: Idle_Battle_SwordAndShield
+ externalObjects: {}
+ materials:
+ materialImportMode: 0
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 3
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations:
+ - serializedVersion: 16
+ name: Idle_Battle_SwordAndShield
+ takeName: Take 001
+ internalID: 0
+ firstFrame: 0
+ lastFrame: 20
+ wrapMode: 0
+ orientationOffsetY: 0
+ level: 0
+ cycleOffset: 0
+ loop: 0
+ hasAdditiveReferencePose: 0
+ loopTime: 1
+ loopBlend: 0
+ loopBlendOrientation: 1
+ loopBlendPositionY: 1
+ loopBlendPositionXZ: 1
+ keepOriginalOrientation: 1
+ keepOriginalPositionY: 1
+ keepOriginalPositionXZ: 1
+ heightFromFeet: 0
+ mirror: 0
+ bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
+ curves: []
+ events: []
+ transformMask:
+ - path:
+ weight: 1
+ - path: Body05
+ weight: 0
+ - path: Eye01
+ weight: 0
+ - path: Hair01
+ weight: 0
+ - path: Head01_Male
+ weight: 0
+ - path: Mouth01
+ weight: 0
+ - path: root
+ weight: 1
+ - path: root/pelvis
+ weight: 1
+ - path: root/pelvis/spine_01
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/BackpackBone
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/shoulderPadJoint_l
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l/index_01_l
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l/index_01_l/index_02_l
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l/index_01_l/index_02_l/index_03_l
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l/thumb_01_l
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l/thumb_01_l/thumb_02_l
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l/thumb_01_l/thumb_02_l/thumb_03_l
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l/weapon_l
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/shoulderPadJoint_r
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r/index_01_r
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r/index_01_r/index_02_r
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r/index_01_r/index_02_r/index_03_r
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r/thumb_01_r
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r/thumb_01_r/thumb_02_r
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r/thumb_01_r/thumb_02_r/thumb_03_r
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r/weapon_r
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/CloakBone01
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/CloakBone01/CloakBone02
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/CloakBone01/CloakBone02/CloakBone03
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/neck_01
+ weight: 1
+ - path: root/pelvis/spine_01/spine_02/spine_03/neck_01/head
+ weight: 1
+ - path: root/pelvis/thigh_l
+ weight: 1
+ - path: root/pelvis/thigh_l/calf_l
+ weight: 1
+ - path: root/pelvis/thigh_l/calf_l/foot_l
+ weight: 1
+ - path: root/pelvis/thigh_l/calf_l/foot_l/ball_l
+ weight: 1
+ - path: root/pelvis/thigh_r
+ weight: 1
+ - path: root/pelvis/thigh_r/calf_r
+ weight: 1
+ - path: root/pelvis/thigh_r/calf_r/foot_r
+ weight: 1
+ - path: root/pelvis/thigh_r/calf_r/foot_r/ball_r
+ weight: 1
+ maskType: 1
+ maskSource: {fileID: 31900000, guid: 0a2d610c66cc08b4492b8b3de93fdbde, type: 2}
+ additiveReferencePoseFrame: 0
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human:
+ - boneName: pelvis
+ humanName: Hips
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: thigh_l
+ humanName: LeftUpperLeg
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: thigh_r
+ humanName: RightUpperLeg
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: calf_l
+ humanName: LeftLowerLeg
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: calf_r
+ humanName: RightLowerLeg
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: foot_l
+ humanName: LeftFoot
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: foot_r
+ humanName: RightFoot
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: spine_01
+ humanName: Spine
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: head
+ humanName: Head
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: upperarm_l
+ humanName: LeftUpperArm
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: upperarm_r
+ humanName: RightUpperArm
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: lowerarm_l
+ humanName: LeftLowerArm
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: lowerarm_r
+ humanName: RightLowerArm
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: hand_l
+ humanName: LeftHand
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: hand_r
+ humanName: RightHand
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: ball_l
+ humanName: LeftToes
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: ball_r
+ humanName: RightToes
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: thumb_01_l
+ humanName: Left Thumb Proximal
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: thumb_02_l
+ humanName: Left Thumb Intermediate
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: index_01_l
+ humanName: Left Index Proximal
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: index_02_l
+ humanName: Left Index Intermediate
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: thumb_01_r
+ humanName: Right Thumb Proximal
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: thumb_02_r
+ humanName: Right Thumb Intermediate
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: index_01_r
+ humanName: Right Index Proximal
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: index_02_r
+ humanName: Right Index Intermediate
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: spine_02
+ humanName: Chest
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: spine_03
+ humanName: UpperChest
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: clavicle_l
+ humanName: LeftShoulder
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: clavicle_r
+ humanName: RightShoulder
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: neck_01
+ humanName: Neck
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: thumb_03_l
+ humanName: Left Thumb Distal
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: index_03_l
+ humanName: Left Index Distal
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: thumb_03_r
+ humanName: Right Thumb Distal
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ - boneName: index_03_r
+ humanName: Right Index Distal
+ limit:
+ min: {x: 0, y: 0, z: 0}
+ max: {x: 0, y: 0, z: 0}
+ value: {x: 0, y: 0, z: 0}
+ length: 0
+ modified: 0
+ skeleton:
+ - name: Idle_Battle_SwordAndShiled(Clone)
+ parentName:
+ position: {x: 0, y: 0, z: 0}
+ rotation: {x: 0, y: 0, z: 0, w: 1}
+ scale: {x: 1, y: 1, z: 1}
+ - name: Hair01
+ parentName: Idle_Battle_SwordAndShiled(Clone)
+ position: {x: 5.5542004e-16, y: 0.9141078, z: 0.012847028}
+ rotation: {x: -0.5, y: 0.5, z: -0.5, w: 0.5}
+ scale: {x: 1, y: 1, z: 1}
+ - name: Eye01
+ parentName: Idle_Battle_SwordAndShiled(Clone)
+ position: {x: 2.7120293e-16, y: 0.9141078, z: 0.012847028}
+ rotation: {x: -0.5, y: 0.5, z: -0.5, w: 0.5}
+ scale: {x: 1, y: 1, z: 1}
+ - name: Head01_Male
+ parentName: Idle_Battle_SwordAndShiled(Clone)
+ position: {x: 2.7120293e-16, y: 0.9141078, z: 0.012847028}
+ rotation: {x: -0.5, y: 0.5, z: -0.5, w: 0.5}
+ scale: {x: 1, y: 1, z: 1}
+ - name: Mouth01
+ parentName: Idle_Battle_SwordAndShiled(Clone)
+ position: {x: 5.5542004e-16, y: 0.9141078, z: 0.012847028}
+ rotation: {x: -0.5, y: 0.5, z: -0.5, w: 0.5}
+ scale: {x: 1, y: 1, z: 1}
+ - name: Body05
+ parentName: Idle_Battle_SwordAndShiled(Clone)
+ position: {x: -0, y: 0.45777598, z: -0.45902124}
+ rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068}
+ scale: {x: 1, y: 1, z: 1}
+ - name: Cloak02
+ parentName: Idle_Battle_SwordAndShiled(Clone)
+ position: {x: -0, y: 0.5790208, z: -0.81771773}
+ rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068}
+ scale: {x: 1, y: 1, z: 1}
+ - name: root
+ parentName: Idle_Battle_SwordAndShiled(Clone)
+ position: {x: -0, y: 0, z: 0}
+ rotation: {x: -0.7093532, y: -0, z: -0, w: 0.7048532}
+ scale: {x: 1, y: 1.0000006, z: 1.0000006}
+ - name: pelvis
+ parentName: root
+ position: {x: -1.0845211e-17, y: 0.00007575201, z: 0.32165092}
+ rotation: {x: 0.062176764, y: 0.7043679, z: -0.062176853, w: 0.7043679}
+ scale: {x: 1.0000018, y: 1.0000011, z: 1.0000014}
+ - name: thigh_l
+ parentName: pelvis
+ position: {x: 0.029832672, y: -0.0141515955, z: -0.09502096}
+ rotation: {x: -0.036186893, y: 0.03976303, z: -0.002768956, w: 0.9985498}
+ scale: {x: 1.0000007, y: 1.0000006, z: 1.0000004}
+ - name: calf_l
+ parentName: thigh_l
+ position: {x: 0.1377729, y: -0.0059484076, z: -0.0027491562}
+ rotation: {x: 0.02691302, y: -0.022706516, z: 0.0010662572, w: -0.99937934}
+ scale: {x: 1.0000007, y: 1.0000001, z: 0.99999994}
+ - name: foot_l
+ parentName: calf_l
+ position: {x: 0.12562445, y: 0.012257197, z: 0.002024065}
+ rotation: {x: -0.025008963, y: -0.0624419, z: 0.0012533205, w: 0.9977344}
+ scale: {x: 1.0000008, y: 1.0000015, z: 1.0000015}
+ - name: ball_l
+ parentName: foot_l
+ position: {x: 0.020222384, y: -0.10951788, z: -0.0015459505}
+ rotation: {x: -0.00000006146728, y: -0.000000048428767, z: -0.7071068, w: -0.7071068}
+ scale: {x: 1.0000011, y: 0.9999998, z: 1.0000013}
+ - name: spine_01
+ parentName: pelvis
+ position: {x: -0.09894391, y: -0.01896602, z: 0.0033746792}
+ rotation: {x: -0.08780647, y: 0.004682541, z: 0.053046927, w: 0.9947131}
+ scale: {x: 0.99999946, y: 0.9999992, z: 0.999999}
+ - name: spine_02
+ parentName: spine_01
+ position: {x: -0.107710324, y: 0.011222288, z: 6.8414275e-17}
+ rotation: {x: 0.000000022351742, y: -0.00000016344711, z: 0.1341374, w: -0.9909628}
+ scale: {x: 0.9999996, y: 1.0000002, z: 1.0000002}
+ - name: spine_03
+ parentName: spine_02
+ position: {x: -0.09346745, y: 8.8817837e-17, z: 6.418694e-17}
+ rotation: {x: -0.000000011051662, y: -0.000000081724345, z: 0.042781133, w: 0.9990845}
+ scale: {x: 1.0000001, y: 1.0000006, z: 0.99999994}
+ - name: neck_01
+ parentName: spine_03
+ position: {x: -0.07696576, y: -1.5099033e-16, z: 1.13396255e-17}
+ rotation: {x: 0.000000013483575, y: 0.000000017281502, z: -0.087512165, w: -0.9961635}
+ scale: {x: 1.0000019, y: 1.0000018, z: 1.0000014}
+ - name: head
+ parentName: neck_01
+ position: {x: -0.20523393, y: -3.5527136e-17, z: 1.09031954e-16}
+ rotation: {x: -0.000000025381734, y: -0.000000052992352, z: 0.045955647, w: -0.99894345}
+ scale: {x: 1.0000007, y: 1.0000011, z: 1.0000013}
+ - name: clavicle_l
+ parentName: spine_03
+ position: {x: -0.01944315, y: -0.021992614, z: -0.062890135}
+ rotation: {x: -0.10418874, y: 0.7700338, z: 0.0322023, w: -0.6286141}
+ scale: {x: 1.0000005, y: 1.0000021, z: 1.0000014}
+ - name: upperarm_l
+ parentName: clavicle_l
+ position: {x: -0.10173372, y: 4.440892e-18, z: -1.4210854e-16}
+ rotation: {x: -0.011902688, y: 0.10369653, z: 0.070935935, w: 0.99200475}
+ scale: {x: 1.0000002, y: 1.0000017, z: 1.0000025}
+ - name: lowerarm_l
+ parentName: upperarm_l
+ position: {x: -0.19922544, y: -1.9984014e-17, z: 2.1316282e-16}
+ rotation: {x: 0.000000054948018, y: -0.000000029802315, z: 0.058328252, w: 0.9982975}
+ scale: {x: 1.0000004, y: 1.0000006, z: 1.0000005}
+ - name: hand_l
+ parentName: lowerarm_l
+ position: {x: -0.13859957, y: -3.5527136e-17, z: -1.065814e-15}
+ rotation: {x: 0.70662516, y: -0.026095154, z: 0.02609507, w: -0.7066251}
+ scale: {x: 1.0000001, y: 1.0000031, z: 1.0000025}
+ - name: index_01_l
+ parentName: hand_l
+ position: {x: -0.078995824, y: -0.029177444, z: 0.005036025}
+ rotation: {x: -0.0000028908248, y: 0.0025714093, z: 0.0010916347, w: 0.9999962}
+ scale: {x: 1.0000007, y: 1.0000012, z: 1.0000017}
+ - name: index_02_l
+ parentName: index_01_l
+ position: {x: -0.084993236, y: -2.842171e-16, z: -2.8366196e-16}
+ rotation: {x: 0.000005745178, y: -0.0034163173, z: -0.040483348, w: 0.99917436}
+ scale: {x: 1.0000007, y: 1.0000042, z: 1.0000045}
+ - name: index_03_l
+ parentName: index_02_l
+ position: {x: -0.063433915, y: -4.2632563e-16, z: 2.7755574e-18}
+ rotation: {x: -0.0026570698, y: 0.010807825, z: -0.035711274, w: 0.99930024}
+ scale: {x: 0.99999946, y: 1.0000002, z: 0.99999994}
+ - name: thumb_01_l
+ parentName: hand_l
+ position: {x: -0.062028673, y: 0.025731737, z: -0.046623435}
+ rotation: {x: -0.5024613, y: 0.3625928, z: -0.14099312, w: -0.77212703}
+ scale: {x: 1.0000008, y: 1.0000013, z: 1.0000001}
+ - name: thumb_02_l
+ parentName: thumb_01_l
+ position: {x: -0.052380655, y: -4.6629366e-17, z: 0}
+ rotation: {x: -0.024324644, y: -0.023914147, z: -0.032934725, w: 0.9988753}
+ scale: {x: 1.0000007, y: 1.0000002, z: 1.000003}
+ - name: thumb_03_l
+ parentName: thumb_02_l
+ position: {x: -0.045099992, y: 1.7763568e-17, z: -1.4210854e-16}
+ rotation: {x: -0.012497648, y: -0.0024275442, z: -0.071094766, w: 0.9973884}
+ scale: {x: 1.0000021, y: 0.99999994, z: 1.0000017}
+ - name: weapon_l
+ parentName: hand_l
+ position: {x: -0.094, y: 0.0069999998, z: 0.004}
+ rotation: {x: -0.7071067, y: 0.0000000018626445, z: 0.00000002833446, w: -0.7071068}
+ scale: {x: 1.0000005, y: 1.0000007, z: 1.0000005}
+ - name: shoulderPadJoint_l
+ parentName: clavicle_l
+ position: {x: -0.10172261, y: 0.0000031123172, z: 0.000054128275}
+ rotation: {x: -0.009676, y: 0.10392798, z: 0.09219542, w: 0.99025524}
+ scale: {x: 1.0000008, y: 1.0000015, z: 1.0000021}
+ - name: CloakBone01
+ parentName: spine_03
+ position: {x: -0.07525502, y: 0.1138894, z: -1.3765184e-16}
+ rotation: {x: -0.19011138, y: 0.9817625, z: -0.000000034166476, w: -0.00000002543333}
+ scale: {x: 1.0000001, y: 1.0000014, z: 1.000001}
+ - name: CloakBone02
+ parentName: CloakBone01
+ position: {x: -0.2614295, y: 2.6645352e-17, z: -5.804901e-17}
+ rotation: {x: -0.000000022111164, y: -0.000000037080298, z: 0.09271763, w: 0.9956925}
+ scale: {x: 1.0000005, y: 0.9999998, z: 0.9999997}
+ - name: CloakBone03
+ parentName: CloakBone02
+ position: {x: -0.30492613, y: -1.0658141e-16, z: -7.123106e-17}
+ rotation: {x: -0.000000019613275, y: 0.00000004588284, z: 0.0567417, w: 0.99838895}
+ scale: {x: 1.0000001, y: 0.99999934, z: 0.99999946}
+ - name: BackpackBone
+ parentName: spine_03
+ position: {x: -0.05273138, y: 0.21801382, z: -1.2915617e-16}
+ rotation: {x: -0.02944411, y: 0.7064935, z: -0.029444126, w: -0.7064935}
+ scale: {x: 1.0000006, y: 1.0000011, z: 1.0000013}
+ - name: clavicle_r
+ parentName: spine_03
+ position: {x: -0.01944353, y: -0.021992618, z: 0.0628901}
+ rotation: {x: -0.7700337, y: -0.104188755, z: -0.6286142, w: -0.032202322}
+ scale: {x: 1.0000011, y: 1.0000011, z: 1.0000007}
+ - name: upperarm_r
+ parentName: clavicle_r
+ position: {x: 0.10173414, y: 0.000000103064025, z: 0.000000544563}
+ rotation: {x: -0.011902684, y: 0.10369647, z: 0.070935935, w: 0.9920048}
+ scale: {x: 0.9999997, y: 1.0000011, z: 1.0000002}
+ - name: lowerarm_r
+ parentName: upperarm_r
+ position: {x: 0.19922526, y: -1.1510433e-11, z: 2.5579537e-15}
+ rotation: {x: 0.00000006891785, y: -0.000000014901156, z: 0.058328275, w: 0.99829745}
+ scale: {x: 1.0000002, y: 1.0000013, z: 1.0000031}
+ - name: hand_r
+ parentName: lowerarm_r
+ position: {x: 0.13859951, y: 9.530944e-10, z: 1.563194e-15}
+ rotation: {x: -0.7066251, y: 0.026095143, z: -0.02609511, w: 0.7066251}
+ scale: {x: 1.0000002, y: 1.0000004, z: 1.000001}
+ - name: index_01_r
+ parentName: hand_r
+ position: {x: 0.078995995, y: 0.029178, z: -0.00503602}
+ rotation: {x: -0.000003010034, y: 0.0025714354, z: 0.0010915379, w: 0.9999962}
+ scale: {x: 1.0000001, y: 0.99999994, z: 0.99999994}
+ - name: index_02_r
+ parentName: index_01_r
+ position: {x: 0.084993325, y: -0.00000055632756, z: 6.6904715e-10}
+ rotation: {x: 0.000005959391, y: -0.0034166572, z: -0.04048517, w: 0.9991743}
+ scale: {x: 0.99999994, y: 1.0000006, z: 0.9999998}
+ - name: index_03_r
+ parentName: index_02_r
+ position: {x: 0.063433595, y: -0.00000008902263, z: -0.0000000019323867}
+ rotation: {x: -0.002657218, y: 0.0108078215, z: -0.035711385, w: 0.99930024}
+ scale: {x: 1.0000004, y: 1.0000006, z: 0.99999946}
+ - name: thumb_01_r
+ parentName: hand_r
+ position: {x: 0.062028997, y: -0.025731001, z: 0.046623457}
+ rotation: {x: 0.50245965, y: -0.36258844, z: 0.14099674, w: 0.77212954}
+ scale: {x: 1.0000006, y: 1, z: 1.0000012}
+ - name: thumb_02_r
+ parentName: thumb_01_r
+ position: {x: 0.052380603, y: -0.000000021094301, z: 0.00000059586444}
+ rotation: {x: -0.024324942, y: -0.023915488, z: -0.032934904, w: 0.99887526}
+ scale: {x: 1, y: 0.9999992, z: 1.0000019}
+ - name: thumb_03_r
+ parentName: thumb_02_r
+ position: {x: 0.045099515, y: -0.00000023024785, z: 0.000000114253595}
+ rotation: {x: -0.012497454, y: -0.002427339, z: -0.07109481, w: 0.99738836}
+ scale: {x: 1.0000015, y: 0.9999998, z: 1.0000014}
+ - name: weapon_r
+ parentName: hand_r
+ position: {x: 0.09399239, y: -0.0072682807, z: -0.00360484}
+ rotation: {x: 0.70710677, y: 0.000000013038514, z: -0.0000000035533598, w: 0.70710695}
+ scale: {x: 1.0000002, y: 1.0000006, z: 1.0000007}
+ - name: shoulderPadJoint_r
+ parentName: clavicle_r
+ position: {x: 0.10172303, y: -0.0000030092533, z: -0.000053583713}
+ rotation: {x: -0.99025524, y: -0.09219543, z: 0.10392789, w: -0.009675993}
+ scale: {x: 1.0000001, y: 1.000002, z: 1.0000015}
+ - name: thigh_r
+ parentName: pelvis
+ position: {x: 0.02983256, y: 0.019493982, z: 0.094070405}
+ rotation: {x: -0.03963389, y: 0.1393248, z: 0.9894442, w: -0.004238036}
+ scale: {x: 1.0000002, y: 0.9999998, z: 0.9999998}
+ - name: calf_r
+ parentName: thigh_r
+ position: {x: -0.13777272, y: 0.0059483806, z: 0.0027488763}
+ rotation: {x: -0.026912972, y: 0.022706501, z: -0.0010662051, w: 0.9993793}
+ scale: {x: 1.0000015, y: 1.0000001, z: 1.0000001}
+ - name: foot_r
+ parentName: calf_r
+ position: {x: -0.12562485, y: -0.012257216, z: -0.0020234145}
+ rotation: {x: -0.025034029, y: -0.062442236, z: 0.0012543072, w: 0.99773383}
+ scale: {x: 1.0000001, y: 1.0000008, z: 1.000001}
+ - name: ball_r
+ parentName: foot_r
+ position: {x: -0.020222299, y: 0.109517895, z: 0.0015459999}
+ rotation: {x: -0.00000007823109, y: -0.0000000372529, z: 0.70710677, w: 0.70710695}
+ scale: {x: 1.0000015, y: 1.000005, z: 1.0000027}
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 1
+ hasExtraRoot: 1
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 3
+ humanoidOversampling: 1
+ avatarSetup: 1
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/JAY/Animation/MoveFWD.anim b/Assets/JAY/Animation/MoveFWD.anim
new file mode 100644
index 00000000..28c125b1
--- /dev/null
+++ b/Assets/JAY/Animation/MoveFWD.anim
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e71cef2d7ec36fb875dcf70278d0870fa1f299295af4beb3ee8cbfa24b16024b
+size 868405
diff --git a/Assets/JAY/Animation/MoveFWD.anim.meta b/Assets/JAY/Animation/MoveFWD.anim.meta
new file mode 100644
index 00000000..e24b9a41
--- /dev/null
+++ b/Assets/JAY/Animation/MoveFWD.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bee907366c7092f438e0c05839332ca5
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/JAY/Animator.meta b/Assets/JAY/Animator.meta
new file mode 100644
index 00000000..34112fe4
--- /dev/null
+++ b/Assets/JAY/Animator.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a9e0606fbb9eff542926cf31a71db1ec
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/JAY/Animator/PlayerController.controller b/Assets/JAY/Animator/PlayerController.controller
new file mode 100644
index 00000000..d46c2f2f
--- /dev/null
+++ b/Assets/JAY/Animator/PlayerController.controller
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:08d59f4f15437f527ada2d57db2db6ad8fa7d0dc8446934f0d18a2a590021068
+size 4267
diff --git a/Assets/JAY/Animator/PlayerController.controller.meta b/Assets/JAY/Animator/PlayerController.controller.meta
new file mode 100644
index 00000000..4c9e3d26
--- /dev/null
+++ b/Assets/JAY/Animator/PlayerController.controller.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4b599839aef3f5146a78f2edb646f2b1
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 9100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/JAY/Character Test Scene.unity b/Assets/JAY/Character Test Scene.unity
new file mode 100644
index 00000000..40b4460f
--- /dev/null
+++ b/Assets/JAY/Character Test Scene.unity
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c66ec53ae91ce31decef84939d3722fa53df7028bd5b03356f02ada610525340
+size 27705
diff --git a/Assets/JAY/Character Test Scene.unity.meta b/Assets/JAY/Character Test Scene.unity.meta
new file mode 100644
index 00000000..525fe2ec
--- /dev/null
+++ b/Assets/JAY/Character Test Scene.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 96b35fd950759c34895ff811b76af3c3
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/JAY/HousingUI.unity b/Assets/JAY/HousingUI.unity
new file mode 100644
index 00000000..6a31f72a
--- /dev/null
+++ b/Assets/JAY/HousingUI.unity
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dfbe617d5120b11016d29cf820a94aece991331056d41a410117dc27cbb42763
+size 70754
diff --git a/Assets/JAY/HousingUI.unity.meta b/Assets/JAY/HousingUI.unity.meta
new file mode 100644
index 00000000..35fff34c
--- /dev/null
+++ b/Assets/JAY/HousingUI.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 4ec2c7383c46ec645b868688b4e2950f
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/JAY/Prefabs.meta b/Assets/JAY/Prefabs.meta
new file mode 100644
index 00000000..bb88102e
--- /dev/null
+++ b/Assets/JAY/Prefabs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bfc91d3964a05904a88562fdef9a7e6c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/JAY/Prefabs/Equipments.meta b/Assets/JAY/Prefabs/Equipments.meta
new file mode 100644
index 00000000..f9f6bd08
--- /dev/null
+++ b/Assets/JAY/Prefabs/Equipments.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2c820602050ac1d4b907f11034ef95ad
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/JAY/Prefabs/Equipments/Chopstick.prefab b/Assets/JAY/Prefabs/Equipments/Chopstick.prefab
new file mode 100644
index 00000000..58ddd54a
--- /dev/null
+++ b/Assets/JAY/Prefabs/Equipments/Chopstick.prefab
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:92273f22c8c7d7c2962ae85babfc37d80ead49026cc9787136a7a4cd8b794c40
+size 6474
diff --git a/Assets/JAY/Prefabs/Equipments/Chopstick.prefab.meta b/Assets/JAY/Prefabs/Equipments/Chopstick.prefab.meta
new file mode 100644
index 00000000..eb3fbe58
--- /dev/null
+++ b/Assets/JAY/Prefabs/Equipments/Chopstick.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: cdfd96e94fec4014989e36f19373adb2
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/JAY/Prefabs/Player.prefab b/Assets/JAY/Prefabs/Player.prefab
new file mode 100644
index 00000000..8c88cda6
--- /dev/null
+++ b/Assets/JAY/Prefabs/Player.prefab
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7c84b42a2592f87b28c9896250c88e1c18f0181a1301f87946184d4e8c838c5c
+size 78185
diff --git a/Assets/JAY/Prefabs/Player.prefab.meta b/Assets/JAY/Prefabs/Player.prefab.meta
new file mode 100644
index 00000000..d213f1fd
--- /dev/null
+++ b/Assets/JAY/Prefabs/Player.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b2775e44f9b29414faf17cc5025f9478
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/JAY/Scripts.meta b/Assets/JAY/Scripts.meta
new file mode 100644
index 00000000..9cded3f2
--- /dev/null
+++ b/Assets/JAY/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 815e81ef8b9bcab49bf3ab57cd0a44ff
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/JAY/Scripts/PlayerController.cs b/Assets/JAY/Scripts/PlayerController.cs
new file mode 100644
index 00000000..4dc0bfef
--- /dev/null
+++ b/Assets/JAY/Scripts/PlayerController.cs
@@ -0,0 +1,105 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public enum PlayerState { None, Idle, Move, Attack, Hit, Dead }
+
+public class PlayerController : CharacterBase
+{
+ // 외부 접근 가능 변수
+ [Header("Movement")]
+ [SerializeField] private float rotationSpeed = 10f;
+
+ [Header("Attach Points")]
+ [SerializeField] private Transform rightHandTransform;
+ [SerializeField] private Transform headTransform;
+
+
+ // 내부에서만 사용하는 변수
+ private CharacterController _characterController;
+ private bool _isBattle;
+ private GameObject weapon;
+
+ // 상태 관련
+ private PlayerStateIdle _playerStateIdle;
+ private PlayerStateMove _playerStateMove;
+
+ // 외부에서도 사용하는 변수
+ public FixedJoystick joystick { get; private set; }
+ public PlayerState CurrentState { get; private set; }
+ private Dictionary _playerStates;
+ public Animator PlayerAnimator { get; private set; }
+ public CharacterController CharacterController => _characterController;
+
+ private void Awake()
+ {
+ PlayerAnimator = GetComponent();
+ _characterController = GetComponent();
+ if (joystick == null)
+ {
+ joystick = FindObjectOfType();
+ }
+ }
+
+ private void Start()
+ {
+ // 상태 초기화
+ _playerStateIdle = new PlayerStateIdle();
+ _playerStateMove = new PlayerStateMove();
+
+ _playerStates = new Dictionary
+ {
+ { PlayerState.Idle, _playerStateIdle },
+ { PlayerState.Move, _playerStateMove },
+ };
+
+ PlayerInit();
+ }
+
+ private void Update()
+ {
+ if (CurrentState != PlayerState.None)
+ {
+ _playerStates[CurrentState].Update();
+ }
+ }
+
+ #region 초기화 관련
+
+ private void PlayerInit()
+ {
+ SetState(PlayerState.Idle);
+
+ InstantiateWeapon();
+ weapon.SetActive(_isBattle);
+ }
+
+ private void InstantiateWeapon()
+ {
+ if (weapon == null)
+ {
+ GameObject weaponObject = Resources.Load("Player/Weapon/Chopstick");
+ weapon = Instantiate(weaponObject, rightHandTransform);
+ // .GetComponent();
+ }
+ }
+
+
+ #endregion
+
+ public void SetState(PlayerState state)
+ {
+ if (CurrentState != PlayerState.None)
+ {
+ _playerStates[CurrentState].Exit();
+ }
+ CurrentState = state;
+ _playerStates[CurrentState].Enter(this);
+ }
+
+ public void SwitchBattleMode()
+ {
+ _isBattle = !_isBattle;
+ weapon.SetActive(_isBattle);
+ }
+}
diff --git a/Assets/JAY/Scripts/PlayerController.cs.meta b/Assets/JAY/Scripts/PlayerController.cs.meta
new file mode 100644
index 00000000..641bdc2b
--- /dev/null
+++ b/Assets/JAY/Scripts/PlayerController.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6a528ab8686f2e7428da4a1af1172d14
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/JAY/Scripts/PlayerControllerEditor.cs b/Assets/JAY/Scripts/PlayerControllerEditor.cs
new file mode 100644
index 00000000..846aad26
--- /dev/null
+++ b/Assets/JAY/Scripts/PlayerControllerEditor.cs
@@ -0,0 +1,67 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+[CustomEditor(typeof(PlayerController))]
+public class PlayerControllerEditor : Editor
+{
+ public override void OnInspectorGUI()
+ {
+ // 기본 인스펙터를 그리기
+ base.OnInspectorGUI();
+
+ // 타겟 컴포넌트 참조 가져오기
+ PlayerController playerController = (PlayerController)target;
+
+ // 여백 추가
+ EditorGUILayout.Space();
+ EditorGUILayout.LabelField("상태 디버그 정보", EditorStyles.boldLabel);
+
+
+ EditorGUILayout.BeginVertical(EditorStyles.helpBox);
+ EditorGUILayout.LabelField("현재 상태", playerController.CurrentState.ToString(),
+ EditorStyles.boldLabel);
+ EditorGUILayout.EndVertical();
+
+
+ // 지면 접촉 상태
+ GUI.backgroundColor = Color.white;
+ EditorGUILayout.Space();
+ EditorGUILayout.LabelField("캐릭터 디버그 정보", EditorStyles.boldLabel);
+ // GUI.enabled = false;
+ // EditorGUILayout.Toggle("지면 접촉", playerController.IsGrounded);
+ // GUI.enabled = true;
+
+ // 강제로 상태 변경 버튼
+ EditorGUILayout.BeginHorizontal();
+
+ if (GUILayout.Button("BattleMode"))
+ playerController.SwitchBattleMode();
+ // if (GUILayout.Button("Attack"))
+ // playerController.SetState(PlayerState.Attack);
+ // if (GUILayout.Button("Hit"))
+ // playerController.SetState(PlayerState.Hit);
+ // if (GUILayout.Button("Dead"))
+ // playerController.SetState(PlayerState.Dead);
+
+ EditorGUILayout.EndHorizontal();
+ }
+
+ private void OnEnable()
+ {
+ EditorApplication.update += OnEditorUpdate;
+ }
+
+ private void OnDisable()
+ {
+ EditorApplication.update -= OnEditorUpdate;
+ }
+
+ private void OnEditorUpdate()
+ {
+ if (target != null)
+ Repaint();
+ }
+}
diff --git a/Assets/JAY/Scripts/PlayerControllerEditor.cs.meta b/Assets/JAY/Scripts/PlayerControllerEditor.cs.meta
new file mode 100644
index 00000000..d5abe5d8
--- /dev/null
+++ b/Assets/JAY/Scripts/PlayerControllerEditor.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: b0b2ffd1e9824f71ac899076fa692425
+timeCreated: 1744940250
\ No newline at end of file
diff --git a/Assets/JAY/Scripts/PlayerState.meta b/Assets/JAY/Scripts/PlayerState.meta
new file mode 100644
index 00000000..c9bddca3
--- /dev/null
+++ b/Assets/JAY/Scripts/PlayerState.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: a4bf902c969a48439357a75159718385
+timeCreated: 1744942105
\ No newline at end of file
diff --git a/Assets/JAY/Scripts/PlayerState/IPlayerState.cs b/Assets/JAY/Scripts/PlayerState/IPlayerState.cs
new file mode 100644
index 00000000..c45cd422
--- /dev/null
+++ b/Assets/JAY/Scripts/PlayerState/IPlayerState.cs
@@ -0,0 +1,9 @@
+public interface IPlayerState
+{
+ // 해당 상태로 진입했을 때 호출되는 메서드
+ void Enter(PlayerController playerController);
+ // 해당 상태에 머물러 있을 때 Update 주기로 호출되는 메서드
+ void Update();
+ // 해당 상태에서 빠져 나갈 때 호출되는 메서드
+ void Exit();
+}
\ No newline at end of file
diff --git a/Assets/JAY/Scripts/PlayerState/IPlayerState.cs.meta b/Assets/JAY/Scripts/PlayerState/IPlayerState.cs.meta
new file mode 100644
index 00000000..1b4e9788
--- /dev/null
+++ b/Assets/JAY/Scripts/PlayerState/IPlayerState.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 80d0d284b37a49eeb7376c3b07207f0c
+timeCreated: 1744941077
\ No newline at end of file
diff --git a/Assets/JAY/Scripts/PlayerState/PlayerStateIdle.cs b/Assets/JAY/Scripts/PlayerState/PlayerStateIdle.cs
new file mode 100644
index 00000000..fcb897fb
--- /dev/null
+++ b/Assets/JAY/Scripts/PlayerState/PlayerStateIdle.cs
@@ -0,0 +1,30 @@
+using UnityEngine;
+
+public class PlayerStateIdle : IPlayerState
+{
+ private PlayerController _playerController;
+
+ public void Enter(PlayerController playerController)
+ {
+ _playerController = playerController;
+ // _playerController.Animator.SetBool("Idle", true);
+ }
+
+ public void Update()
+ {
+ float inputHorizontal = _playerController.joystick.Horizontal;
+ float inputVertical = _playerController.joystick.Vertical;
+
+ // 이동
+ if (inputHorizontal != 0 || inputVertical != 0)
+ {
+ _playerController.SetState(PlayerState.Move);
+ return;
+ }
+ }
+
+ public void Exit()
+ {
+ _playerController = null;
+ }
+}
diff --git a/Assets/JAY/Scripts/PlayerState/PlayerStateIdle.cs.meta b/Assets/JAY/Scripts/PlayerState/PlayerStateIdle.cs.meta
new file mode 100644
index 00000000..a8424bf3
--- /dev/null
+++ b/Assets/JAY/Scripts/PlayerState/PlayerStateIdle.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 9da273f1a9ed4537b36c546a1c9cc390
+timeCreated: 1744942131
\ No newline at end of file
diff --git a/Assets/JAY/Scripts/PlayerState/PlayerStateMove.cs b/Assets/JAY/Scripts/PlayerState/PlayerStateMove.cs
new file mode 100644
index 00000000..cc55078c
--- /dev/null
+++ b/Assets/JAY/Scripts/PlayerState/PlayerStateMove.cs
@@ -0,0 +1,66 @@
+using UnityEngine;
+
+public class PlayerStateMove : IPlayerState
+{
+ private static readonly int Move = Animator.StringToHash("Move");
+ private PlayerController _playerController;
+ private Vector3 _gravityVelocity;
+
+ public void Enter(PlayerController playerController)
+ {
+ _playerController = playerController;
+ _playerController.PlayerAnimator.SetBool(Move, true);
+ }
+
+ public void Update()
+ {
+ float inputHorizontal = _playerController.joystick.Horizontal;
+ float inputVertical = _playerController.joystick.Vertical;
+
+ // 이동
+ if (inputHorizontal != 0 || inputVertical != 0)
+ {
+ HandleMovement();
+ return;
+ }
+ else
+ {
+ _playerController.SetState(PlayerState.Idle);
+ }
+ }
+
+ public void Exit()
+ {
+ _playerController.PlayerAnimator.SetBool(Move, false);
+ _playerController = null;
+ }
+
+ private void HandleMovement()
+ {
+ float inputHorizontal = _playerController.joystick.Horizontal;
+ float inputVertical = _playerController.joystick.Vertical;
+
+ Vector3 moveDir = new Vector3(inputHorizontal, 0, inputVertical);
+ Vector3 move = moveDir.normalized * _playerController.moveSpeed;
+
+ // 회전
+ if (moveDir.magnitude > 0.1f)
+ {
+ Quaternion toRotation = Quaternion.LookRotation(moveDir, Vector3.up);
+ _playerController.transform.rotation = Quaternion.Slerp(_playerController.transform.rotation, toRotation, Time.deltaTime * 10f);
+ }
+
+ // 중력 처리
+ if (_playerController.CharacterController.isGrounded && _gravityVelocity.y < 0)
+ {
+ _gravityVelocity.y = -0.1f;
+ }
+
+ _gravityVelocity.y += _playerController.gravity * Time.deltaTime;
+
+ Vector3 finalMove = (move + _gravityVelocity) * Time.deltaTime;
+ _playerController.CharacterController.Move(finalMove);
+
+ // _playerController.PlayerAnimator.SetFloat("Move", _playerController.CharacterController.velocity.magnitude);
+ }
+}
diff --git a/Assets/JAY/Scripts/PlayerState/PlayerStateMove.cs.meta b/Assets/JAY/Scripts/PlayerState/PlayerStateMove.cs.meta
new file mode 100644
index 00000000..526863f0
--- /dev/null
+++ b/Assets/JAY/Scripts/PlayerState/PlayerStateMove.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 1399a67446d14e10bbee938def76d41a
+timeCreated: 1744942268
\ No newline at end of file
diff --git a/Assets/KSH.meta b/Assets/KSH.meta
new file mode 100644
index 00000000..32286553
--- /dev/null
+++ b/Assets/KSH.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8899b70334c78204fb97b6da706ac4c6
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/KSH/GameConstants.cs b/Assets/KSH/GameConstants.cs
new file mode 100644
index 00000000..2bd483bb
--- /dev/null
+++ b/Assets/KSH/GameConstants.cs
@@ -0,0 +1,43 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+// 행동 타입
+public enum ActionType
+{
+ Sleep, // 8시 기상
+ OverSlept, // 결근-늦잠
+ ForcedSleep, // 탈진(체력 0)
+ Eat,
+ Work,
+ Dungeon,
+ Housework, // 집안일
+ OvertimeWork, // 야근
+ TeamDinner, // 회식
+ Absence // 결근
+}
+
+public class GameConstants
+{
+ // 기본 스탯 값
+ public float baseHealth = 8f;
+ public float baseTime = 8f;
+ public float baseReputation = 2f;
+
+ // 스탯 한계 값
+ public float maxHealth = 10f;
+ public float maxTime = 24f;
+ public float maxReputation = 10f;
+
+ // 체력 회복 한계 값
+ public float limitRecover = 8.0f;
+
+ // 기상 시간
+ public float wakeUpTime = 8.0f;
+
+ // 수면 이벤트 강제 값
+ public float forcedValue = 999f;
+
+ // 날짜 한계 값
+ public static int maxDays = 7;
+}
diff --git a/Assets/KSH/GameConstants.cs.meta b/Assets/KSH/GameConstants.cs.meta
new file mode 100644
index 00000000..7fb223ac
--- /dev/null
+++ b/Assets/KSH/GameConstants.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1e1682026c3858a4f8974675387aaf5a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/KSH/GameManager.cs b/Assets/KSH/GameManager.cs
new file mode 100644
index 00000000..80b0725b
--- /dev/null
+++ b/Assets/KSH/GameManager.cs
@@ -0,0 +1,89 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.SceneManagement;
+
+public class GameManager : Singleton
+{
+ [SerializeField] private PlayerStats playerStats;
+
+ private Canvas _canvas;
+
+ // 게임 진행 상태
+ private int currentDay = 1;
+ public int CurrentDay => currentDay;
+ private int maxDays = GameConstants.maxDays;
+
+ // 날짜 변경 이벤트, 추후에 UI 상의 날짜를 변경할 때 사용
+ public event Action OnDayChanged;
+
+ private void Start()
+ {
+ // PlayerStats의 하루 종료 이벤트 구독
+ if (playerStats == null)
+ {
+ playerStats = FindObjectOfType();
+ }
+
+ if (playerStats == null)
+ {
+ Debug.LogError("PlayerStats 컴포넌트를 찾을 수 없습니다.");
+ return;
+ }
+ playerStats.OnDayEnded += AdvanceDay;
+ }
+
+ // 날짜 진행
+ public void AdvanceDay()
+ {
+ currentDay++;
+ OnDayChanged?.Invoke(currentDay);
+
+ // 최대 일수 도달 체크
+ if (currentDay > maxDays)
+ {
+ TriggerTimeEnding();
+ }
+ }
+
+ // 엔딩 트리거
+ private void TriggerTimeEnding()
+ {
+ // TODO: 엔딩 처리 로직
+ Debug.Log("7일이 지나 게임이 종료됩니다.");
+ }
+
+ public void ChangeToGameScene()
+ {
+ SceneManager.LoadScene("Game"); // 던전 Scene
+ }
+
+ public void ChangeToMainScene()
+ {
+ SceneManager.LoadScene("Housing"); // Home Scene
+ }
+
+ // TODO: Open Setting Panel 등 Panel 처리
+
+ protected override void OnSceneLoaded(Scene scene, LoadSceneMode mode)
+ {
+ // TODO: 씬 로드 시 동작 구현. ex: BGM 변경
+
+ // UI용 Canvas 찾기
+ // _canvas = GameObject.FindObjectOfType