gitea init

This commit is contained in:
fiore 2025-04-28 11:30:16 +09:00
commit 5b77d6762d
4908 changed files with 248385 additions and 0 deletions

14
.gitattributes vendored Normal file
View File

@ -0,0 +1,14 @@
*.psd filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.mat filter=lfs diff=lfs merge=lfs -text
*.prefab filter=lfs diff=lfs merge=lfs -text
*.anim filter=lfs diff=lfs merge=lfs -text
*.controller filter=lfs diff=lfs merge=lfs -text
*.unity filter=lfs diff=lfs merge=lfs -text
*.unitypackage filter=lfs diff=lfs merge=lfs -text

74
.gitignore vendored Normal file
View File

@ -0,0 +1,74 @@
# This .gitignore file should be placed at the root of your Unity project directory
#
# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
#
.utmp/
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Uu]ser[Ss]ettings/
# MemoryCaptures can get excessive in size.
# They also could contain extremely sensitive data
/[Mm]emoryCaptures/
# Recordings can get excessive in size
/[Rr]ecordings/
# Uncomment this line if you wish to ignore the asset store tools plugin
# /[Aa]ssets/AssetStoreTools*
# Autogenerated Jetbrains Rider plugin
/[Aa]ssets/Plugins/Editor/JetBrains*
# Visual Studio cache directory
.vs/
# Gradle cache directory
.gradle/
# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db
# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
*.mdb.meta
# Unity3D generated file on crash reports
sysinfo.txt
# Builds
*.apk
*.aab
*.unitypackage
*.unitypackage.meta
*.app
# Crashlytics generated file
crashlytics-build.properties
# Packed Addressables
/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*
# Temporary auto-generated Android Assets
/[Aa]ssets/[Ss]treamingAssets/aa.meta
/[Aa]ssets/[Ss]treamingAssets/aa/*

13
.idea/.idea.Degulleo3D/.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,13 @@
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/.idea.Degulleo3D.iml
/projectSettingsUpdater.xml
/contentModel.xml
/modules.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
</project>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>

View File

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="CssInvalidPropertyValue" enabled="true" level="ERROR" enabled_by_default="true" />
</profile>
</component>

6
.idea/.idea.Degulleo3D/.idea/vcs.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@ -0,0 +1,2 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=assets_005Cjyy_005Cscripts/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

10
Assets/Editor.meta Normal file
View File

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 612dfb3f3c0e45e3aaa9d5def5189516
timeCreated: 1744852718
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,68 @@
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(PldDogController))]
public class EnemyControllerEditor : Editor
{
public override void OnInspectorGUI()
{
// 기본 인스펙터를 그리기
base.OnInspectorGUI();
// 타겟 컴포넌트 참조 가져오기
EnemyController enemyController = (EnemyController)target;
// 여백 추가
EditorGUILayout.Space();
EditorGUILayout.LabelField("상태 디버그 정보", EditorStyles.boldLabel);
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
// 상태별 색상 지정
switch (enemyController.CurrentState)
{
case EnemyState.Idle:
GUI.backgroundColor = new Color(0, 0, 1, 1f);
break;
case EnemyState.Trace:
GUI.backgroundColor = new Color(1, 0, 1, 1f);
break;
case EnemyState.Dead:
GUI.backgroundColor = new Color(1, 0, 0, 1f);
break;
}
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
EditorGUILayout.LabelField("현재 상태", enemyController.CurrentState.ToString(),
EditorStyles.boldLabel);
EditorGUILayout.EndVertical();
EditorGUILayout.EndVertical();
EditorGUILayout.Space();
GUI.backgroundColor= Color.clear;
EditorGUILayout.LabelField("상태 변경", EditorStyles.boldLabel);
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("Idle")) enemyController.SetState(EnemyState.Idle);
if (GUILayout.Button("Trace")) enemyController.SetState(EnemyState.Trace);
if (GUILayout.Button("Dead")) enemyController.SetState(EnemyState.Dead);
EditorGUILayout.EndHorizontal();
}
private void OnEnable()
{
EditorApplication.update += OnEditorUpdate;
}
private void OnDisable()
{
EditorApplication.update -= OnEditorUpdate;
}
private void OnEditorUpdate()
{
if (target != null)
Repaint();
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 9e73fc154fc447fea93336f02b6df5ea
timeCreated: 1744852745

8
Assets/JAY.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a0ba1963fb7ce5041be57eb9074619f8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 89b8be7111302d34298d8fbccefa94cc
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JAY/Animation/Attack01.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c25471f7e975de140af2a11af5aa791a
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JAY/Animation/Attack02.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2c17f0c4e3017bb448ff5120b9f61794
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JAY/Animation/Attack03.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 23ef3f3f7e8603c43b49b5a12de765cf
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JAY/Animation/Attack04.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ee0fb1c70ff918147854e2fa7f8ce65d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JAY/Animation/Dead.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 26572f377ac934546b30d6d9e0cab051
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JAY/Animation/Idle.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 962d2d90bb1030b4599179cdb9e2e6c3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JAY/Animation/Idle_Battle.fbx (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -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:

BIN
Assets/JAY/Animation/MoveFWD.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bee907366c7092f438e0c05839332ca5
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,109 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!319 &31900000
AvatarMask:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: UpperBodyOnly
m_Mask: 00000000010000000100000000000000000000000100000001000000010000000100000000000000000000000100000001000000
m_Elements:
- m_Path:
m_Weight: 1
- m_Path: Body05
m_Weight: 1
- m_Path: Eye01
m_Weight: 1
- m_Path: Hair01
m_Weight: 1
- m_Path: Head01_Male
m_Weight: 1
- m_Path: Mouth01
m_Weight: 1
- m_Path: root
m_Weight: 1
- m_Path: root/pelvis
m_Weight: 1
- m_Path: root/pelvis/spine_01
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/BackpackBone
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/shoulderPadJoint_l
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l/index_01_l
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l/index_01_l/index_02_l
m_Weight: 1
- m_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
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l/thumb_01_l
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l/thumb_01_l/thumb_02_l
m_Weight: 1
- m_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
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l/weapon_l
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/shoulderPadJoint_r
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r/index_01_r
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r/index_01_r/index_02_r
m_Weight: 1
- m_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
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r/thumb_01_r
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r/thumb_01_r/thumb_02_r
m_Weight: 1
- m_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
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r/weapon_r
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/CloakBone01
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/CloakBone01/CloakBone02
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/CloakBone01/CloakBone02/CloakBone03
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/neck_01
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/neck_01/head
m_Weight: 1
- m_Path: root/pelvis/thigh_l
m_Weight: 1
- m_Path: root/pelvis/thigh_l/calf_l
m_Weight: 1
- m_Path: root/pelvis/thigh_l/calf_l/foot_l
m_Weight: 1
- m_Path: root/pelvis/thigh_l/calf_l/foot_l/ball_l
m_Weight: 1
- m_Path: root/pelvis/thigh_r
m_Weight: 1
- m_Path: root/pelvis/thigh_r/calf_r
m_Weight: 1
- m_Path: root/pelvis/thigh_r/calf_r/foot_r
m_Weight: 1
- m_Path: root/pelvis/thigh_r/calf_r/foot_r/ball_r
m_Weight: 1

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7a5307288916a174ab64fb7c68209bac
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 31900000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,109 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!319 &31900000
AvatarMask:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: WholeBody
m_Mask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
m_Elements:
- m_Path:
m_Weight: 1
- m_Path: Body05
m_Weight: 1
- m_Path: Eye01
m_Weight: 1
- m_Path: Hair01
m_Weight: 1
- m_Path: Head01_Male
m_Weight: 1
- m_Path: Mouth01
m_Weight: 1
- m_Path: root
m_Weight: 1
- m_Path: root/pelvis
m_Weight: 1
- m_Path: root/pelvis/spine_01
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/BackpackBone
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/shoulderPadJoint_l
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l/index_01_l
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l/index_01_l/index_02_l
m_Weight: 1
- m_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
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l/thumb_01_l
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l/thumb_01_l/thumb_02_l
m_Weight: 1
- m_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
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_l/upperarm_l/lowerarm_l/hand_l/weapon_l
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/shoulderPadJoint_r
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r/index_01_r
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r/index_01_r/index_02_r
m_Weight: 1
- m_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
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r/thumb_01_r
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r/thumb_01_r/thumb_02_r
m_Weight: 1
- m_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
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/clavicle_r/upperarm_r/lowerarm_r/hand_r/weapon_r
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/CloakBone01
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/CloakBone01/CloakBone02
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/CloakBone01/CloakBone02/CloakBone03
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/neck_01
m_Weight: 1
- m_Path: root/pelvis/spine_01/spine_02/spine_03/neck_01/head
m_Weight: 1
- m_Path: root/pelvis/thigh_l
m_Weight: 1
- m_Path: root/pelvis/thigh_l/calf_l
m_Weight: 1
- m_Path: root/pelvis/thigh_l/calf_l/foot_l
m_Weight: 1
- m_Path: root/pelvis/thigh_l/calf_l/foot_l/ball_l
m_Weight: 1
- m_Path: root/pelvis/thigh_r
m_Weight: 1
- m_Path: root/pelvis/thigh_r/calf_r
m_Weight: 1
- m_Path: root/pelvis/thigh_r/calf_r/foot_r
m_Weight: 1
- m_Path: root/pelvis/thigh_r/calf_r/foot_r/ball_r
m_Weight: 1

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6593ee38fd371db459652c920630d2c9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 31900000
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JAY/Animation/Win.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a3b0144fdb439d941b9e9014a1635178
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

8
Assets/JAY/Animator.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a9e0606fbb9eff542926cf31a71db1ec
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JAY/Animator/PlayerController.controller (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4b599839aef3f5146a78f2edb646f2b1
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JAY/Character Test Scene.unity (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 96b35fd950759c34895ff811b76af3c3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JAY/HousingUI.unity (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4ec2c7383c46ec645b868688b4e2950f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Assets/JAY/Prefabs.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bfc91d3964a05904a88562fdef9a7e6c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JAY/Prefabs/Player.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b2775e44f9b29414faf17cc5025f9478
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JAY/Prefabs/WoodChopstick.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 31f394375ca23d74e82ded5b2efca2b6
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JAY/Prefabs/woodChopstick.fbx (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,109 @@
fileFormatVersion: 2
guid: 72a88a4cb2c991b48a9c7ebd8f1a5065
ModelImporter:
serializedVersion: 22200
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

8
Assets/JAY/Scripts.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 815e81ef8b9bcab49bf3ab57cd0a44ff
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 0d821074393d4e97aa21ac0fb2cb40d9
timeCreated: 1745375836

View File

@ -0,0 +1,6 @@
public interface IPlayerAction {
void StartAction(PlayerController player);
void UpdateAction();
void EndAction();
bool IsActive { get; }
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: d66c33c9a4ef493f9522d78f41b3778f
timeCreated: 1745375851

View File

@ -0,0 +1,58 @@
using UnityEngine;
public class PlayerActionAttack : IPlayerAction {
private PlayerController player;
private int comboStep = 1;
private bool comboQueued = false;
private bool canReceiveCombo = false;
public bool IsActive { get; private set; }
public void StartAction(PlayerController player) {
this.player = player;
IsActive = true;
comboStep = 1;
comboQueued = false;
PlayComboAnimation(comboStep);
player.PlayerAnimator.SetBool("Attack", true);
}
public void UpdateAction() {
if (Input.GetKeyDown(KeyCode.X) && canReceiveCombo) {
comboQueued = true;
}
}
public void EndAction() {
player.PlayerAnimator.SetBool("Attack", false);
IsActive = false;
player = null;
}
public void EnableCombo() {
canReceiveCombo = true;
}
public void DisableCombo() {
canReceiveCombo = false;
if (comboQueued && comboStep < 4) {
comboStep++;
PlayComboAnimation(comboStep);
comboQueued = false;
} else {
EndAction(); // 행동 종료
}
}
private void PlayComboAnimation(int step) {
player.PlayerAnimator.SetInteger("ComboStep", step);
// 무기에 콤보 단계 전달
var weapon = player.GetComponentInChildren<WeaponController>();
if (weapon != null)
{
weapon.SetComboStep(step);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 0513c92d4bea436fb9be539a2f3ad0e3
timeCreated: 1745375880

View File

@ -0,0 +1,56 @@
using UnityEngine;
public class PlayerActionDash : IPlayerAction
{
private PlayerController player;
private float duration = 0.25f; // 대시 유지 시간
private float timer; // 대시 경과 시간
private Vector3 direction; // 대시 방향
private float dashSpeedMultiplier = 3f; // 기본 이동 속도의 n배
private float dashSpeed; // 실제 대시 속도(계산한 값)
public bool IsActive { get; private set; } // 현재 대시 중인지 여부
public void StartAction(PlayerController player)
{
this.player = player;
IsActive = true;
timer = 0f;
// 조이스틱 입력값 있으면 그 방향, 없으면 캐릭터가 바라보는 방향
direction = player.GetMoveDirectionOrForward().normalized;
// 대시 속도 = 이동 속도 x 배수
dashSpeed = player.moveSpeed * dashSpeedMultiplier;
// TODO: 필요 시 애니메이션 재생
// player.PlayerAnimator.SetTrigger("Roll");
}
public void UpdateAction()
{
if (!IsActive) return;
DoDash();
}
private void DoDash()
{
timer += Time.deltaTime;
if (timer < duration)
{
player.CharacterController.Move(direction * dashSpeed * Time.deltaTime);
}
else
{
EndAction();
}
}
public void EndAction()
{
IsActive = false;
player = null;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: eceb0c738c2c4690b8b4dd02e10c7df4
timeCreated: 1745459840

View File

@ -0,0 +1,223 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public enum PlayerState { None, Idle, Move, Win, Hit, Dead }
public class PlayerController : CharacterBase, IObserver<GameObject>
{
// 외부 접근 가능 변수
[Header("Attach Points")]
[SerializeField] private Transform rightHandTransform;
// 내부에서만 사용하는 변수
private CharacterController _characterController;
private bool _isBattle;
private GameObject weapon;
private WeaponController _weaponController;
private IPlayerState _currentStateClass { get; set; }
private IPlayerAction _currentAction;
public IPlayerAction CurrentAction => _currentAction;
// 상태 관련
private PlayerStateIdle _playerStateIdle;
private PlayerStateMove _playerStateMove;
private PlayerStateWin _playerStateWin;
private PlayerStateDead _playerStateDead;
// 행동 관련
private PlayerActionAttack _attackAction;
private PlayerActionDash _actionDash;
// 외부에서도 사용하는 변수
public FixedJoystick Joystick { get; private set; }
public PlayerState CurrentState { get; private set; }
private Dictionary<PlayerState, IPlayerState> _playerStates;
public Animator PlayerAnimator { get; private set; }
public CharacterController CharacterController => _characterController;
private void Awake()
{
PlayerAnimator = GetComponent<Animator>();
_characterController = GetComponent<CharacterController>();
if (Joystick == null)
{
Joystick = FindObjectOfType<FixedJoystick>();
}
}
protected override void Start()
{
base.Start();
// 상태 초기화
_playerStateIdle = new PlayerStateIdle();
_playerStateMove = new PlayerStateMove();
_playerStateWin = new PlayerStateWin();
_playerStateDead = new PlayerStateDead();
_playerStates = new Dictionary<PlayerState, IPlayerState>
{
{ PlayerState.Idle, _playerStateIdle },
{ PlayerState.Move, _playerStateMove },
{ PlayerState.Win, _playerStateWin },
{ PlayerState.Dead, _playerStateDead },
};
_attackAction = new PlayerActionAttack();
_actionDash = new PlayerActionDash();
PlayerInit();
}
private void Update()
{
if (CurrentState != PlayerState.None)
{
_playerStates[CurrentState].Update();
}
// 대시 우선 입력 처리
if (Input.GetKeyDown(KeyCode.Space))
{
StartDashAction();
return;
}
// 공격 입력 처리
if (Input.GetKeyDown(KeyCode.X) && (_currentAction == null || !_currentAction.IsActive)) {
StartAttackAction();
}
// 액션 업데이트
if (_currentAction != null && _currentAction.IsActive)
{
_currentAction.UpdateAction();
}
}
#region
private void PlayerInit()
{
SetState(PlayerState.Idle);
InstantiateWeapon();
}
private void InstantiateWeapon()
{
if (weapon == null)
{
GameObject weaponObject = Resources.Load<GameObject>("Player/Weapon/Chopstick");
weapon = Instantiate(weaponObject, rightHandTransform);
_weaponController = weapon?.GetComponent<WeaponController>();
_weaponController?.Subscribe(this);
weapon?.SetActive(_isBattle);
}
}
#endregion
#region ,
public void SetState(PlayerState state)
{
if (CurrentState != PlayerState.None)
{
_playerStates[CurrentState].Exit();
}
CurrentState = state;
_currentStateClass = _playerStates[state];
_currentStateClass.Enter(this);
}
public void StartAttackAction() {
_currentAction = _attackAction;
_currentAction.StartAction(this);
}
public void StartDashAction()
{
// 만약 공격 중이면 강제로 공격 종료
if (_currentAction == _attackAction && _attackAction.IsActive)
{
_attackAction.EndAction(); // 애니메이션도 중단
}
// 기존 대시 중이면 중복 실행 안 함
if (_actionDash.IsActive)
return;
_currentAction = _actionDash;
_actionDash.StartAction(this);
}
#endregion
#region
public void SwitchBattleMode()
{
_isBattle = !_isBattle;
weapon.SetActive(_isBattle);
}
// Animation Event에서 호출될 메서드
public void SetAttackComboTrue() {
if (_weaponController.IsAttacking) return; // 이미 공격 중이면 실행 안함
if (_currentAction == _attackAction) {
_attackAction.EnableCombo();
_weaponController.AttackStart();
}
}
public void SetAttackComboFalse() {
if (_currentAction == _attackAction) {
_attackAction.DisableCombo();
_weaponController.AttackEnd();
}
}
#endregion
#region
public Vector3 GetMoveDirectionOrForward()
{
Vector3 dir = new Vector3(Joystick.Horizontal, 0, Joystick.Vertical);
return dir.sqrMagnitude > 0.01f ? dir.normalized : transform.forward;
}
public void DashButtonPressed()
{
if (!_actionDash.IsActive)
{
StartDashAction();
}
}
#endregion
#region IObserver
public void OnNext(GameObject value)
{
}
public void OnError(Exception error)
{
}
public void OnCompleted()
{
_weaponController.Unsubscribe(this);
}
#endregion
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6a528ab8686f2e7428da4a1af1172d14
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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.LabelField("현재 행동", playerController.CurrentAction != null ? playerController.CurrentAction.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("Win"))
playerController.SetState(PlayerState.Win);
// 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();
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b0b2ffd1e9824f71ac899076fa692425
timeCreated: 1744940250

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: a4bf902c969a48439357a75159718385
timeCreated: 1744942105

View File

@ -0,0 +1,9 @@
public interface IPlayerState
{
// 해당 상태로 진입했을 때 호출되는 메서드
void Enter(PlayerController playerController);
// 해당 상태에 머물러 있을 때 Update 주기로 호출되는 메서드
void Update();
// 해당 상태에서 빠져 나갈 때 호출되는 메서드
void Exit();
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 80d0d284b37a49eeb7376c3b07207f0c
timeCreated: 1744941077

View File

@ -0,0 +1,22 @@
using UnityEngine;
public class PlayerStateDead : IPlayerState
{
private PlayerController _playerController;
public void Enter(PlayerController playerController)
{
_playerController = playerController;
_playerController.PlayerAnimator.SetBool("Dead", true);
}
public void Update()
{
}
public void Exit()
{
_playerController.PlayerAnimator.SetBool("Dead", false);
_playerController = null;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b6fc619c4dc14ad98c56d083a62b56b7
timeCreated: 1745481194

View File

@ -0,0 +1,28 @@
using UnityEngine;
public class PlayerStateIdle : IPlayerState
{
private PlayerController _playerController;
public void Enter(PlayerController playerController)
{
_playerController = playerController;
}
public void Update()
{
float inputHorizontal = _playerController.Joystick.Horizontal;
float inputVertical = _playerController.Joystick.Vertical;
// 이동
if (inputHorizontal != 0 || inputVertical != 0)
{
_playerController.SetState(PlayerState.Move);
}
}
public void Exit()
{
_playerController = null;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 9da273f1a9ed4537b36c546a1c9cc390
timeCreated: 1744942131

View File

@ -0,0 +1,63 @@
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();
}
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);
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 1399a67446d14e10bbee938def76d41a
timeCreated: 1744942268

View File

@ -0,0 +1,22 @@
using UnityEngine;
public class PlayerStateWin : IPlayerState
{
private PlayerController _playerController;
public void Enter(PlayerController playerController)
{
_playerController = playerController;
_playerController.PlayerAnimator.SetBool("Win", true);
}
public void Update()
{
}
public void Exit()
{
_playerController.PlayerAnimator.SetBool("Win", false);
_playerController = null;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e54b8d32431d4263a6a470f9a150b003
timeCreated: 1745479273

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e8c373d7c1104f62b6ff1848bcc6b3f1
timeCreated: 1745283320

View File

@ -0,0 +1,10 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public interface IObservable<T>
{
public void Subscribe(IObserver<T> observer);
public void Unsubscribe(IObserver<T> observer);
public void Notify(T value);
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 7db2e89701864527b193c3c5b241ca76
timeCreated: 1745283381

View File

@ -0,0 +1,11 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public interface IObserver<T>
{
public void OnNext(T value);
public void OnError(Exception error);
public void OnCompleted();
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 739f14653b804ce4a07632994722e3d6
timeCreated: 1745283352

View File

@ -0,0 +1,202 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WeaponController : MonoBehaviour, IObservable<GameObject>
{
[Serializable]
public class WeaponTriggerZone
{
public Vector3 position;
public float radius;
}
[SerializeField] private WeaponTriggerZone[] _triggerZones;
[SerializeField] private LayerMask targetLayerMask;
private List<IObserver<GameObject>> _observers = new List<IObserver<GameObject>>();
// 공격 데미지 처리
private int attackPower = 1;
private int _comboStep = 1;
public int AttackPower // 플레이어 공격 데미지
{
get
{
// 마지막 콤보일 경우 공격력 증가
return _comboStep == 4 ? attackPower * 4 : attackPower;
}
}
private PlayerController _playerController;
private bool _isAttacking = false;
public bool IsAttacking => _isAttacking;
// 충돌 처리
private Vector3[] _previousPositions;
private HashSet<Collider> _hitColliders;
private Ray _ray = new Ray();
private RaycastHit[] _hits = new RaycastHit[10];
private void Start()
{
if (_triggerZones == null || _triggerZones.Length == 0)
{
Debug.LogWarning("Trigger Zones이 설정되지 않았습니다.");
return;
}
_playerController = GetComponent<PlayerController>();
if (_playerController == null)
{
_playerController = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerController>();
}
_previousPositions = new Vector3[_triggerZones.Length];
_hitColliders = new HashSet<Collider>();
}
public void AttackStart()
{
if (_hitColliders == null)
{
Debug.LogError("_hitColliders가 null입니다. 무기를 들고 있는지 확인해 주세요!");
return;
}
_isAttacking = true;
_hitColliders.Clear();
for (int i = 0; i < _triggerZones.Length; i++)
{
_previousPositions[i] = transform.position + transform.TransformVector(_triggerZones[i].position);
}
}
public void AttackEnd()
{
_isAttacking = false;
}
private void FixedUpdate()
{
if (_isAttacking)
{
for (int i = 0; i < _triggerZones.Length; i++)
{
var worldPosition = transform.position +
transform.TransformVector(_triggerZones[i].position);
var direction = worldPosition - _previousPositions[i];
_ray.origin = _previousPositions[i];
_ray.direction = direction;
if (direction.magnitude < 0.01f) return;
var hitCount = Physics.SphereCastNonAlloc(_ray,
_triggerZones[i].radius, _hits,
direction.magnitude, targetLayerMask,
QueryTriggerInteraction.UseGlobal);
for (int j = 0; j < hitCount; j++)
{
var hit = _hits[j];
if (!_hitColliders.Contains(hit.collider))
{
_hitColliders.Add(hit.collider);
Debug.Log("hit.collider.name: " + hit.collider.name);
if (hit.collider.gameObject.CompareTag("Enemy"))
{
var enemyController = hit.transform.GetComponent<EnemyController>();
if (enemyController != null)
{
enemyController.TakeDamage(AttackPower * _playerController.attackPower);
}
}
Notify(hit.collider.gameObject);
}
}
_previousPositions[i] = worldPosition;
}
}
}
private IEnumerator ResumeTimeScale()
{
yield return new WaitForSecondsRealtime(10f);
Time.timeScale = 1f;
}
public void Subscribe(IObserver<GameObject> observer)
{
if (!_observers.Contains(observer))
{
_observers.Add(observer);
}
}
public void Unsubscribe(IObserver<GameObject> observer)
{
_observers.Remove(observer);
}
public void Notify(GameObject value)
{
foreach (var observer in _observers)
{
observer.OnNext(value);
}
}
private void OnDestroy()
{
var copyObservers = new List<IObserver<GameObject>>(_observers);
foreach (var observer in copyObservers)
{
observer.OnCompleted();
}
_observers.Clear();
}
public void SetComboStep(int step)
{
_comboStep = step;
}
#if UNITY_EDITOR
private void OnDrawGizmos()
{
if (_triggerZones == null) return;
if (_isAttacking && _previousPositions != null)
{
for (int i = 0; i < _triggerZones.Length; i++)
{
if (_triggerZones[i] == null) continue;
var worldPosition = transform.position +
transform.TransformVector(_triggerZones[i].position);
var direction = worldPosition - _previousPositions[i];
Gizmos.color = Color.green;
Gizmos.DrawWireSphere(worldPosition, _triggerZones[i].radius);
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(worldPosition + direction, _triggerZones[i].radius);
}
}
else
{
foreach (var triggerZone in _triggerZones)
{
if (triggerZone == null) continue;
Gizmos.color = Color.green;
Gizmos.DrawSphere(triggerZone.position, triggerZone.radius);
}
}
}
#endif
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 14a4a5b667c44deaac42b0a5b624aaaf
timeCreated: 1745289551

8
Assets/JYY.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1b5aeb9ba846be447b6d45e182831f68
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 705f5cc824e16644497801b43f81b1c1
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JYY/Animation/Attack01 Slash.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: df0c94f0a0eae85438a0bfc0deea8791
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JYY/Animation/Attack01.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 34b2cc555a0977644ab2d9e2350a939d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JYY/Animation/Attack02.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: eccbae3cfc77ad245ade46e143aa3200
timeCreated: 1544605040
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JYY/Animation/Defend.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cf357b5409b4ad54a82c45d7684564e1
timeCreated: 1544607741
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JYY/Animation/Die.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5d190d8211c88a64281f7b90c69f3eb3
timeCreated: 1544605073
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JYY/Animation/DieRecover.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4a3671dbe6670524b8b6d9ad3664c179
timeCreated: 1544607752
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JYY/Animation/Dizzy.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 30d4fe7af77240a44b9354aaed8e5beb
timeCreated: 1544607757
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JYY/Animation/GetHit.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1588532e68f51a040bda71c68cfab177
timeCreated: 1544605085
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JYY/Animation/Idle_Battle.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b79ff7bb68348be479d3db6b7fe8a569
timeCreated: 1544605090
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/JYY/Animation/RunForwardBattle.anim (Stored with Git LFS) Normal file

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More