버그 수정

This commit is contained in:
윤기주_playm 2026-02-03 00:02:12 +09:00
parent 72971841d8
commit 0a056d1072
63 changed files with 153024 additions and 12934 deletions

View File

@ -9131,7 +9131,7 @@ Transform:
m_GameObject: {fileID: 85056388} m_GameObject: {fileID: 85056388}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 36.23, y: 7.99, z: 20.65} m_LocalPosition: {x: 36.06, y: 6.7, z: 24.93}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
@ -65748,6 +65748,53 @@ Transform:
m_CorrespondingSourceObject: {fileID: 4729333555276968, guid: be78ef978f18b0e4ca6416118d68e7bf, type: 3} m_CorrespondingSourceObject: {fileID: 4729333555276968, guid: be78ef978f18b0e4ca6416118d68e7bf, type: 3}
m_PrefabInstance: {fileID: 599507159} m_PrefabInstance: {fileID: 599507159}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!1 &600231662
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 600231664}
- component: {fileID: 600231663}
m_Layer: 0
m_Name: Monster Spawner (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &600231663
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 600231662}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1f525fb5022b0754b9c5e1d725f8b2a4, type: 3}
m_Name:
m_EditorClassIdentifier:
mobTag: NormalMob1
spawnRange: 15
respawnCooldown: 3
--- !u!4 &600231664
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 600231662}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 52.37, y: 7.99, z: 41.83}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &600250742 --- !u!1001 &600250742
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -154594,12 +154641,6 @@ PrefabInstance:
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 76cee5628aa6b874c96342f004fa138b, type: 3} - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 76cee5628aa6b874c96342f004fa138b, type: 3}
insertIndex: -1 insertIndex: -1
addedObject: {fileID: 1432447527} addedObject: {fileID: 1432447527}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 76cee5628aa6b874c96342f004fa138b, type: 3}
insertIndex: -1
addedObject: {fileID: 1432447519}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 76cee5628aa6b874c96342f004fa138b, type: 3}
insertIndex: -1
addedObject: {fileID: 1432447517}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 76cee5628aa6b874c96342f004fa138b, type: 3} - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 76cee5628aa6b874c96342f004fa138b, type: 3}
insertIndex: -1 insertIndex: -1
addedObject: {fileID: 1432447526} addedObject: {fileID: 1432447526}
@ -154621,6 +154662,9 @@ PrefabInstance:
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 76cee5628aa6b874c96342f004fa138b, type: 3} - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 76cee5628aa6b874c96342f004fa138b, type: 3}
insertIndex: -1 insertIndex: -1
addedObject: {fileID: 1432447528} addedObject: {fileID: 1432447528}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: 76cee5628aa6b874c96342f004fa138b, type: 3}
insertIndex: -1
addedObject: {fileID: 1432447534}
m_SourcePrefab: {fileID: 100100000, guid: 76cee5628aa6b874c96342f004fa138b, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 76cee5628aa6b874c96342f004fa138b, type: 3}
--- !u!1 &1432447515 stripped --- !u!1 &1432447515 stripped
GameObject: GameObject:
@ -154632,56 +154676,6 @@ Transform:
m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 76cee5628aa6b874c96342f004fa138b, type: 3} m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 76cee5628aa6b874c96342f004fa138b, type: 3}
m_PrefabInstance: {fileID: 1432447514} m_PrefabInstance: {fileID: 1432447514}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!136 &1432447517
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1432447515}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 2
m_Radius: 0.26
m_Height: 1.64
m_Direction: 1
m_Center: {x: 0, y: 0.84, z: 0}
--- !u!54 &1432447519
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1432447515}
serializedVersion: 4
m_Mass: 95.72
m_Drag: 0
m_AngularDrag: 5.69
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_ImplicitCom: 1
m_ImplicitTensor: 1
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 80
m_CollisionDetection: 0
--- !u!95 &1432447523 stripped --- !u!95 &1432447523 stripped
Animator: Animator:
m_CorrespondingSourceObject: {fileID: 5866666021909216657, guid: 76cee5628aa6b874c96342f004fa138b, type: 3} m_CorrespondingSourceObject: {fileID: 5866666021909216657, guid: 76cee5628aa6b874c96342f004fa138b, type: 3}
@ -154701,6 +154695,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
stats: {fileID: 1432447530} stats: {fileID: 1432447530}
animator: {fileID: 1432447523} animator: {fileID: 1432447523}
attackScript: {fileID: 0}
isInvincible: 0 isInvincible: 0
--- !u!114 &1432447527 --- !u!114 &1432447527
MonoBehaviour: MonoBehaviour:
@ -154802,6 +154797,11 @@ MonoBehaviour:
dashDuration: 0.08 dashDuration: 0.08
dashCooldown: 1.5 dashCooldown: 1.5
minSpeedMultiplier: 0.3 minSpeedMultiplier: 0.3
gravity: -20
weaponLayer:
serializedVersion: 2
m_Bits: 256
minGroundHeight: 0.1
--- !u!114 &1432447532 --- !u!114 &1432447532
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -154835,6 +154835,32 @@ MonoBehaviour:
anim: {fileID: 1432447523} anim: {fileID: 1432447523}
health: {fileID: 1432447526} health: {fileID: 1432447526}
attack: {fileID: 1432447527} attack: {fileID: 1432447527}
--- !u!143 &1432447534
CharacterController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1432447515}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Height: 2
m_Radius: 0.5
m_SlopeLimit: 45
m_StepOffset: 0.2
m_SkinWidth: 0.08
m_MinMoveDistance: 0.001
m_Center: {x: 0, y: 1.03, z: 0}
--- !u!1001 &1432860901 --- !u!1001 &1432860901
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -163997,6 +164023,10 @@ PrefabInstance:
propertyPath: config propertyPath: config
value: value:
objectReference: {fileID: 11400000, guid: 602c0bb77ce70104ab6768b08772132f, type: 2} objectReference: {fileID: 11400000, guid: 602c0bb77ce70104ab6768b08772132f, type: 2}
- target: {fileID: 5253520193507450777, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
propertyPath: m_Layer
value: 8
objectReference: {fileID: 0}
- target: {fileID: 6875888761843048781, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3} - target: {fileID: 6875888761843048781, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
propertyPath: m_Enabled propertyPath: m_Enabled
value: 1 value: 1
@ -164005,6 +164035,10 @@ PrefabInstance:
propertyPath: m_Name propertyPath: m_Name
value: "\uCE7C (5)" value: "\uCE7C (5)"
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 8071134912250732547, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
propertyPath: m_Layer
value: 8
objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []
@ -194676,6 +194710,9 @@ MonoBehaviour:
- tag: NormalMob - tag: NormalMob
prefab: {fileID: 3587750552762439828, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3} prefab: {fileID: 3587750552762439828, guid: 6f13ab79d8b0c90469799a3505f07c8b, type: 3}
size: 20 size: 20
- tag: NormalMob1
prefab: {fileID: 5674935864780053661, guid: 50c1bf70f87f8124baeacfb51b165d44, type: 3}
size: 20
--- !u!1001 &1825079231 --- !u!1001 &1825079231
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -228949,6 +228986,10 @@ PrefabInstance:
propertyPath: m_Size.y propertyPath: m_Size.y
value: 0.008 value: 0.008
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 5253520193507450777, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
propertyPath: m_Layer
value: 8
objectReference: {fileID: 0}
- target: {fileID: 6875888761843048781, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3} - target: {fileID: 6875888761843048781, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
propertyPath: m_Enabled propertyPath: m_Enabled
value: 1 value: 1
@ -228957,6 +228998,10 @@ PrefabInstance:
propertyPath: m_Name propertyPath: m_Name
value: "\uCE7C (4)" value: "\uCE7C (4)"
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 8071134912250732547, guid: 9f51c4433e5c81644807e9e547b7826c, type: 3}
propertyPath: m_Layer
value: 8
objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []
@ -229133,3 +229178,4 @@ SceneRoots:
- {fileID: 1824697940} - {fileID: 1824697940}
- {fileID: 216801511} - {fileID: 216801511}
- {fileID: 85056390} - {fileID: 85056390}
- {fileID: 600231664}

View File

@ -1483,18 +1483,19 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
optimizationDistance: 40 optimizationDistance: 40
maxHP: 9 maxHP: 100
attackDamage: 10
expReward: 10
moveSpeed: 3.5
Monster_Idle: Monster_Idle Monster_Idle: Monster_Idle
Monster_GetDamage: Monster_GetDamage Monster_GetDamage: Monster_GetDamage
Monster_Die: Monster_Die Monster_Die: 'Monster_Die '
attackRestDuration: 1.5 attackRestDuration: 1.5
expReward: 10
hitSound: {fileID: 0} hitSound: {fileID: 0}
deathSound: {fileID: 0} deathSound: {fileID: 0}
deathEffectPrefab: {fileID: 0} deathEffectPrefab: {fileID: 0}
hitEffect: {fileID: 0} hitEffect: {fileID: 0}
impactSpawnPoint: {fileID: 0} impactSpawnPoint: {fileID: 0}
damage: 10
attackRange: 2 attackRange: 2
attackDelay: 1.5 attackDelay: 1.5
attackAnimations: attackAnimations:
@ -1533,7 +1534,7 @@ Rigidbody:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3587750552762439828} m_GameObject: {fileID: 3587750552762439828}
serializedVersion: 4 serializedVersion: 4
m_Mass: 1 m_Mass: 74.42
m_Drag: 0 m_Drag: 0
m_AngularDrag: 0.05 m_AngularDrag: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0} m_CenterOfMass: {x: 0, y: 0, z: 0}
@ -1548,7 +1549,7 @@ Rigidbody:
m_ImplicitCom: 1 m_ImplicitCom: 1
m_ImplicitTensor: 1 m_ImplicitTensor: 1
m_UseGravity: 1 m_UseGravity: 1
m_IsKinematic: 0 m_IsKinematic: 1
m_Interpolate: 0 m_Interpolate: 0
m_Constraints: 112 m_Constraints: 112
m_CollisionDetection: 0 m_CollisionDetection: 0

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

@ -0,0 +1,109 @@
fileFormatVersion: 2
guid: 2b327acc35a4c3b4ba815731340eb581
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:

View File

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

View File

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

View File

@ -0,0 +1,6 @@
newmtl material_0
map_bump material0_normal.jpg
norm material0_normal.jpg
map_Kd material0_basecolor.jpg
Pm 0
Pr 0.5

View File

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

View File

@ -0,0 +1,109 @@
fileFormatVersion: 2
guid: fa89af851ac6d244d968f0a3616ca0d9
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:

View File

@ -0,0 +1,114 @@
fileFormatVersion: 2
guid: 537b4648c408edf4a835dd0d60bccce8
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,114 @@
fileFormatVersion: 2
guid: 9555ac4f28ee74b4e9aabc436d28d377
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 1
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@ -0,0 +1,109 @@
fileFormatVersion: 2
guid: 704699b12c349e843b1b9b6b100bba97
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:

View File

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

View File

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

View File

@ -0,0 +1,6 @@
newmtl material_0
map_bump material0_normal.jpg
norm material0_normal.jpg
map_Kd material0_basecolor.jpg
Pm 0
Pr 0.5

View File

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

View File

@ -0,0 +1,109 @@
fileFormatVersion: 2
guid: b63d1ae513b10cf4ea8ea21db0586d19
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:

View File

@ -0,0 +1,114 @@
fileFormatVersion: 2
guid: c01bec2a8fd7516478e268be1a1450db
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,114 @@
fileFormatVersion: 2
guid: 8c362447fcf832044bbe24d03fde5ccf
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 1
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@ -0,0 +1,109 @@
fileFormatVersion: 2
guid: d34adf36f41e29645970d129fb2877b5
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:

View File

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

View File

@ -0,0 +1,6 @@
newmtl material_0
map_bump material0_normal.jpg
norm material0_normal.jpg
map_Kd material0_basecolor.jpg
Pm 0
Pr 0.5

View File

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

View File

@ -0,0 +1,109 @@
fileFormatVersion: 2
guid: 7820731c0b31e6e4aa73b312f6e91128
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:

Binary file not shown.

After

Width:  |  Height:  |  Size: 605 KiB

View File

@ -0,0 +1,114 @@
fileFormatVersion: 2
guid: d30fc167af376f8438ba1ca55ff673ca
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 830 KiB

View File

@ -0,0 +1,114 @@
fileFormatVersion: 2
guid: 03ae7492fb59bf440a7ed16a9eb328b3
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 1
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -212,7 +212,7 @@ AnimatorStateMachine:
m_StateMachineTransitions: {} m_StateMachineTransitions: {}
m_StateMachineBehaviours: [] m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 50, y: 20, z: 0} m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_EntryPosition: {x: 50, y: 120, z: 0} m_EntryPosition: {x: 180, y: 110, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0} m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: 1102234220340736258} m_DefaultState: {fileID: 1102234220340736258}

View File

@ -1,179 +1,12 @@
%YAML 1.1 %YAML 1.1
%TAG !u! tag:unity3d.com,2011: %TAG !u! tag:unity3d.com,2011:
--- !u!91 &9100000 --- !u!1102 &-6275610741364301554
AnimatorController:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: ghoul_animator_controller
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: 1107429844075586492}
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1101 &1101234353515508576
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 1102662177873326102}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.625
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &1101302885243792274
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 1102527450245358456}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.8333334
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &1101316331250567594
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 1102100605473663394}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.85
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &1101472441713338094
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 1102217136065013648}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &1101610824023144258
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 1102768626811795184}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &1101691244129958460
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 1102315689705612066}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.9050633
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &1101732751563441392
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 1102088008641802984}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.625
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &1102088008641802984
AnimatorState: AnimatorState:
serializedVersion: 5 serializedVersion: 6
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ghoul_die m_Name: ghoul_die
m_Speed: 1 m_Speed: 1
m_CycleOffset: 0 m_CycleOffset: 0
@ -193,17 +26,17 @@ AnimatorState:
m_MirrorParameter: m_MirrorParameter:
m_CycleOffsetParameter: m_CycleOffsetParameter:
m_TimeParameter: m_TimeParameter:
--- !u!1102 &1102100605473663394 --- !u!1102 &-4942273955469260354
AnimatorState: AnimatorState:
serializedVersion: 5 serializedVersion: 6
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_Name: ghoul_block m_PrefabAsset: {fileID: 0}
m_Name: ghoul_gethit
m_Speed: 1 m_Speed: 1
m_CycleOffset: 0 m_CycleOffset: 0
m_Transitions: m_Transitions: []
- {fileID: 1101610824023144258}
m_StateMachineBehaviours: [] m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0} m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0 m_IKOnFeet: 0
@ -213,23 +46,109 @@ AnimatorState:
m_MirrorParameterActive: 0 m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0 m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0 m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 858c7b0ba90cd46cda2c0f8f8ad85565, type: 2} m_Motion: {fileID: 7400000, guid: 478e2ae1d617443aabcf1bcd41e69a67, type: 2}
m_Tag: m_Tag:
m_SpeedParameter: m_SpeedParameter:
m_MirrorParameter: m_MirrorParameter:
m_CycleOffsetParameter: m_CycleOffsetParameter:
m_TimeParameter: m_TimeParameter:
--- !u!1102 &-2591084073835577238
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ghoul_attack
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: ea2b7b1447852468d8fe575ce8eca7fd, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1109 &-1841353923706876430
AnimatorTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 1102527450245358456}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 1
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ghoul_animator_controller
serializedVersion: 5
m_AnimatorParameters:
- m_Name: isMoving
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: isAttacking
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Speed
m_Type: 1
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: attackType
m_Type: 1
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: 1107429844075586492}
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1102 &1102217136065013648 --- !u!1102 &1102217136065013648
AnimatorState: AnimatorState:
serializedVersion: 5 serializedVersion: 6
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ghoul_run m_Name: ghoul_run
m_Speed: 1 m_Speed: 1
m_CycleOffset: 0 m_CycleOffset: 0
m_Transitions: m_Transitions: []
- {fileID: 1101234353515508576}
m_StateMachineBehaviours: [] m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0} m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0 m_IKOnFeet: 0
@ -247,15 +166,15 @@ AnimatorState:
m_TimeParameter: m_TimeParameter:
--- !u!1102 &1102315689705612066 --- !u!1102 &1102315689705612066
AnimatorState: AnimatorState:
serializedVersion: 5 serializedVersion: 6
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ghoul_walk m_Name: ghoul_walk
m_Speed: 1 m_Speed: 1
m_CycleOffset: 0 m_CycleOffset: 0
m_Transitions: m_Transitions: []
- {fileID: 1101472441713338094}
m_StateMachineBehaviours: [] m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0} m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0 m_IKOnFeet: 0
@ -273,15 +192,15 @@ AnimatorState:
m_TimeParameter: m_TimeParameter:
--- !u!1102 &1102527450245358456 --- !u!1102 &1102527450245358456
AnimatorState: AnimatorState:
serializedVersion: 5 serializedVersion: 6
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ghoul_idle m_Name: ghoul_idle
m_Speed: 1 m_Speed: 1
m_CycleOffset: 0 m_CycleOffset: 0
m_Transitions: m_Transitions: []
- {fileID: 1101691244129958460}
m_StateMachineBehaviours: [] m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0} m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0 m_IKOnFeet: 0
@ -297,123 +216,41 @@ AnimatorState:
m_MirrorParameter: m_MirrorParameter:
m_CycleOffsetParameter: m_CycleOffsetParameter:
m_TimeParameter: m_TimeParameter:
--- !u!1102 &1102662177873326102
AnimatorState:
serializedVersion: 5
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: ghoul_attack
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 1101316331250567594}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: ea2b7b1447852468d8fe575ce8eca7fd, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &1102746155440121866
AnimatorState:
serializedVersion: 5
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: ghoul_spawn
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 1101302885243792274}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 443fcfb38ff7b4ca2b5a54800ddebb2d, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &1102768626811795184
AnimatorState:
serializedVersion: 5
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: ghoul_gethit
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 1101732751563441392}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 478e2ae1d617443aabcf1bcd41e69a67, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1107 &1107429844075586492 --- !u!1107 &1107429844075586492
AnimatorStateMachine: AnimatorStateMachine:
serializedVersion: 5 serializedVersion: 6
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Base Layer m_Name: Base Layer
m_ChildStates: m_ChildStates:
- serializedVersion: 1
m_State: {fileID: 1102746155440121866}
m_Position: {x: 24, y: 168, z: 0}
- serializedVersion: 1
m_State: {fileID: 1102662177873326102}
m_Position: {x: 24, y: 360, z: 0}
- serializedVersion: 1
m_State: {fileID: 1102100605473663394}
m_Position: {x: 24, y: 408, z: 0}
- serializedVersion: 1
m_State: {fileID: 1102088008641802984}
m_Position: {x: 24, y: 504, z: 0}
- serializedVersion: 1
m_State: {fileID: 1102768626811795184}
m_Position: {x: 24, y: 456, z: 0}
- serializedVersion: 1 - serializedVersion: 1
m_State: {fileID: 1102527450245358456} m_State: {fileID: 1102527450245358456}
m_Position: {x: 24, y: 216, z: 0} m_Position: {x: 240, y: 230, z: 0}
- serializedVersion: 1 - serializedVersion: 1
m_State: {fileID: 1102217136065013648} m_State: {fileID: 1102217136065013648}
m_Position: {x: 24, y: 312, z: 0} m_Position: {x: 240, y: 320, z: 0}
- serializedVersion: 1 - serializedVersion: 1
m_State: {fileID: 1102315689705612066} m_State: {fileID: 1102315689705612066}
m_Position: {x: 24, y: 264, z: 0} m_Position: {x: 140, y: 410, z: 0}
- serializedVersion: 1
m_State: {fileID: -6275610741364301554}
m_Position: {x: 480, y: 370, z: 0}
- serializedVersion: 1
m_State: {fileID: -4942273955469260354}
m_Position: {x: 400, y: 460, z: 0}
- serializedVersion: 1
m_State: {fileID: -2591084073835577238}
m_Position: {x: 480, y: 270, z: 0}
m_ChildStateMachines: [] m_ChildStateMachines: []
m_AnyStateTransitions: [] m_AnyStateTransitions: []
m_EntryTransitions: [] m_EntryTransitions:
- {fileID: -1841353923706876430}
m_StateMachineTransitions: {} m_StateMachineTransitions: {}
m_StateMachineBehaviours: [] m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 50, y: 20, z: 0} m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_EntryPosition: {x: 50, y: 120, z: 0} m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0} m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: 1102746155440121866} m_DefaultState: {fileID: 1102527450245358456}

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,7 @@ AnimationClip:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInternal: {fileID: 0}
m_Name: die m_Name: ghoul_die
serializedVersion: 6 serializedVersion: 6
m_Legacy: 0 m_Legacy: 0
m_Compressed: 0 m_Compressed: 0
@ -750,10 +750,8 @@ AnimationClip:
- serializedVersion: 2 - serializedVersion: 2
time: 0.10000001 time: 0.10000001
value: {x: 0.9746492, y: 0.13679168, z: -0.0054304684, w: -0.17696741} value: {x: 0.9746492, y: 0.13679168, z: -0.0054304684, w: -0.17696741}
inSlope: {x: -0.0000017881395, y: 0.00000044703486, z: -0.00000012572856, inSlope: {x: -0.0000017881395, y: 0.00000044703486, z: -0.00000012572856, w: 0.00000044703486}
w: 0.00000044703486} outSlope: {x: -0.0000017881395, y: 0.00000044703486, z: -0.00000012572856, w: 0.00000044703486}
outSlope: {x: -0.0000017881395, y: 0.00000044703486, z: -0.00000012572856,
w: 0.00000044703486}
tangentMode: 0 tangentMode: 0
m_PreInfinity: 2 m_PreInfinity: 2
m_PostInfinity: 2 m_PostInfinity: 2
@ -998,10 +996,8 @@ AnimationClip:
- serializedVersion: 2 - serializedVersion: 2
time: 0.53333336 time: 0.53333336
value: {x: 0.34651962, y: 0.18120798, z: 0.5154056, w: 0.7625254} value: {x: 0.34651962, y: 0.18120798, z: 0.5154056, w: 0.7625254}
inSlope: {x: -0.00000044703526, y: 0.00000044703526, z: -0.0000008940705, inSlope: {x: -0.00000044703526, y: 0.00000044703526, z: -0.0000008940705, w: 0}
w: 0} outSlope: {x: -0.00000044703526, y: 0.00000044703526, z: -0.0000008940705, w: 0}
outSlope: {x: -0.00000044703526, y: 0.00000044703526, z: -0.0000008940705,
w: 0}
tangentMode: 0 tangentMode: 0
- serializedVersion: 2 - serializedVersion: 2
time: 0.56666666 time: 0.56666666
@ -1972,10 +1968,8 @@ AnimationClip:
- serializedVersion: 2 - serializedVersion: 2
time: 0.96666664 time: 0.96666664
value: {x: -0.36593145, y: 0.012306717, z: -0.2120754, w: 0.90607214} value: {x: -0.36593145, y: 0.012306717, z: -0.2120754, w: 0.90607214}
inSlope: {x: -0.00000044703367, y: 0.00000011175842, z: -0.0000006705505, inSlope: {x: -0.00000044703367, y: 0.00000011175842, z: -0.0000006705505, w: 0}
w: 0} outSlope: {x: -0.00000044703367, y: 0.00000011175842, z: -0.0000006705505, w: 0}
outSlope: {x: -0.00000044703367, y: 0.00000011175842, z: -0.0000006705505,
w: 0}
tangentMode: 0 tangentMode: 0
- serializedVersion: 2 - serializedVersion: 2
time: 1.0000001 time: 1.0000001
@ -2279,10 +2273,8 @@ AnimationClip:
- serializedVersion: 2 - serializedVersion: 2
time: 0.7 time: 0.7
value: {x: 0.00002779798, y: -0.007835858, z: -0.02419721, w: 0.9996765} value: {x: 0.00002779798, y: -0.007835858, z: -0.02419721, w: 0.9996765}
inSlope: {x: -0.0000000017189435, y: 0.000000069849136, z: 0.00000019557758, inSlope: {x: -0.0000000017189435, y: 0.000000069849136, z: 0.00000019557758, w: 0}
w: 0} outSlope: {x: -0.0000000017189435, y: 0.000000069849136, z: 0.00000019557758, w: 0}
outSlope: {x: -0.0000000017189435, y: 0.000000069849136, z: 0.00000019557758,
w: 0}
tangentMode: 0 tangentMode: 0
- serializedVersion: 2 - serializedVersion: 2
time: 0.7666667 time: 0.7666667
@ -3632,10 +3624,8 @@ AnimationClip:
- serializedVersion: 2 - serializedVersion: 2
time: 1.1000001 time: 1.1000001
value: {x: -0.000027794498, y: 0.007835861, z: -0.02419721, w: 0.9996765} value: {x: -0.000027794498, y: 0.007835861, z: -0.02419721, w: 0.9996765}
inSlope: {x: -0.0000000026193379, y: -0.00000005587921, z: 0.00000016763762, inSlope: {x: -0.0000000026193379, y: -0.00000005587921, z: 0.00000016763762, w: 0}
w: 0} outSlope: {x: -0.0000000026193379, y: -0.00000005587921, z: 0.00000016763762, w: 0}
outSlope: {x: -0.0000000026193379, y: -0.00000005587921, z: 0.00000016763762,
w: 0}
tangentMode: 0 tangentMode: 0
m_PreInfinity: 2 m_PreInfinity: 2
m_PostInfinity: 2 m_PostInfinity: 2

View File

@ -5,7 +5,7 @@ AnimationClip:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInternal: {fileID: 0}
m_Name: gethit m_Name: ghoul_gethit
serializedVersion: 6 serializedVersion: 6
m_Legacy: 0 m_Legacy: 0
m_Compressed: 0 m_Compressed: 0

View File

@ -1,35 +1,37 @@
using UnityEngine; using UnityEngine;
using System; using System;
using System.Collections; // ⭐ IEnumerator 사용을 위해 추가 using System.Collections;
public class PlayerHealth : MonoBehaviour, IDamageable public class PlayerHealth : MonoBehaviour, IDamageable
{ {
[Header("=== 참조 ===")]
[SerializeField] private Stats stats; [SerializeField] private Stats stats;
[SerializeField] private Animator animator; [SerializeField] private Animator animator;
[SerializeField] private PlayerAttack attackScript; // ⭐ 공격 상태 리셋을 위해 추가
public bool IsDead { get; private set; } public bool IsDead { get; private set; }
public bool isHit { get; private set; } public bool isHit { get; private set; }
public bool isInvincible; // 대시 중 무적 플래그 public bool isInvincible; // 대시 중 무적 플래그
public event Action OnHit, OnDead; // ⭐ 기존 OnHit 이벤트와 아래 OnHit() 함수의 이름 충돌을 피하기 위해 이름을 OnHitEvent로 변경함
public event Action OnHitEvent, OnDead;
public event Action<float, float> OnHealthChanged; public event Action<float, float> OnHealthChanged;
private float _currentHealth; private float _currentHealth;
// ⭐ [수정] Start를 코루틴으로 변경하여 실행 순서 문제를 해결합니다.
private IEnumerator Start() private IEnumerator Start()
{ {
// 모든 오브젝트가 깨어날 때까지 한 프레임 기다립니다.
yield return null; yield return null;
if (stats != null) if (stats != null)
{ {
_currentHealth = stats.MaxHealth; _currentHealth = stats.MaxHealth;
// 이제 UI가 확실히 준비되었으므로 수치를 전달합니다.
OnHealthChanged?.Invoke(_currentHealth, stats.MaxHealth); OnHealthChanged?.Invoke(_currentHealth, stats.MaxHealth);
Debug.Log($"<color=cyan>[UI Sync]</color> 초기 체력 설정 완료: {_currentHealth}/{stats.MaxHealth}"); Debug.Log($"<color=cyan>[UI Sync]</color> 초기 체력 설정 완료: {_currentHealth}/{stats.MaxHealth}");
} }
if (animator == null) animator = GetComponent<Animator>(); if (animator == null) animator = GetComponent<Animator>();
// 만약 인스펙터에서 할당 안했다면 자동으로 찾아옴
if (attackScript == null) attackScript = GetComponent<PlayerAttack>();
} }
public void RefreshHealthUI() public void RefreshHealthUI()
@ -44,22 +46,66 @@ public class PlayerHealth : MonoBehaviour, IDamageable
public void TakeDamage(float amount) public void TakeDamage(float amount)
{ {
if (isInvincible || IsDead) return; if (isInvincible || IsDead) return;
_currentHealth = Mathf.Max(0, _currentHealth - amount); _currentHealth = Mathf.Max(0, _currentHealth - amount);
OnHealthChanged?.Invoke(_currentHealth, stats.MaxHealth); OnHealthChanged?.Invoke(_currentHealth, stats.MaxHealth);
OnHit?.Invoke();
// ⭐ 피격 시 트리거 및 상태 리셋 함수 호출
OnHit();
OnHitEvent?.Invoke(); // 이벤트 발생
if (!IsDead) StartHit(); if (!IsDead) StartHit();
if (_currentHealth <= 0) Die(); if (_currentHealth <= 0) Die();
} }
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// ⭐ [추가] 피격 시 공격 상태 리셋 (핵심!)
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
public void OnHit()
{
if (animator != null)
{
// 1. 남아있는 공격 트리거를 강제로 꺼버림 (유령 공격 방지)
animator.ResetTrigger("Attack");
// 2. 다른 공격(예: 투척) 트리거가 있다면 그것도 리셋
animator.ResetTrigger("Throw");
}
// 3. PlayerAttack 스크립트의 공격 중인 상태 플래그도 강제로 꺼줌
if (attackScript != null)
{
attackScript.IsAttacking = false;
}
Debug.Log("<color=yellow>[Combat]</color> 피격으로 인해 공격 예약 및 상태가 초기화되었습니다.");
}
private void StartHit() private void StartHit()
{ {
isHit = true; isHit = true;
// 인스펙터에 적힌 피격 애니메이션 이름(HitAnime) 재생
if (animator != null) animator.Play("HitAnime", 0, 0f); if (animator != null) animator.Play("HitAnime", 0, 0f);
CancelInvoke(nameof(OnHitEnd)); CancelInvoke(nameof(OnHitEnd));
Invoke(nameof(OnHitEnd), 0.25f); Invoke(nameof(OnHitEnd), 0.25f);
} }
public void OnHitEnd() { isHit = false; } public void OnHitEnd() { isHit = false; }
private void Die() { IsDead = true; Cursor.visible = true; Cursor.lockState = CursorLockMode.None; OnDead?.Invoke(); } private void Die()
public void Heal(float amount) { if (IsDead) return; _currentHealth = Mathf.Min(_currentHealth + amount, stats.MaxHealth); OnHealthChanged?.Invoke(_currentHealth, stats.MaxHealth); } {
IsDead = true;
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
OnDead?.Invoke();
}
public void Heal(float amount)
{
if (IsDead) return;
_currentHealth = Mathf.Min(_currentHealth + amount, stats.MaxHealth);
OnHealthChanged?.Invoke(_currentHealth, stats.MaxHealth);
}
} }

View File

@ -10,12 +10,16 @@ public abstract class MonsterClass : MonoBehaviour, IDamageable
protected Transform playerTransform; protected Transform playerTransform;
[SerializeField] protected float optimizationDistance = 40f; [SerializeField] protected float optimizationDistance = 40f;
[Header("스탯")] [Header("몬스터 기본 스탯")] // ⭐ 종류별로 다르게 설정할 핵심 수치들
[SerializeField] protected float maxHP = 100f; [SerializeField] protected float maxHP = 100f;
[SerializeField] protected float attackDamage = 10f; // ⭐ [추가] 몬스터 공격력
[SerializeField] protected int expReward = 10; // ⭐ 경험치 수치
[SerializeField] protected float moveSpeed = 3.5f; // ⭐ 이동 속도 추가 가능
protected float currentHP; protected float currentHP;
public event Action<float, float> OnHealthChanged; public event Action<float, float> OnHealthChanged;
[Header("피격 / 사망 / 대기 애니메이션")] // ⭐ Monster_Idle 추가 [Header("피격 / 사망 / 대기 애니메이션")]
[SerializeField] protected string Monster_Idle = "Monster_Idle"; [SerializeField] protected string Monster_Idle = "Monster_Idle";
[SerializeField] protected string Monster_GetDamage = "Monster_GetDamage"; [SerializeField] protected string Monster_GetDamage = "Monster_GetDamage";
[SerializeField] protected string Monster_Die = "Monster_Die"; [SerializeField] protected string Monster_Die = "Monster_Die";
@ -29,8 +33,6 @@ public abstract class MonsterClass : MonoBehaviour, IDamageable
[SerializeField] protected float attackRestDuration = 1.5f; [SerializeField] protected float attackRestDuration = 1.5f;
protected bool isResting; protected bool isResting;
[Header("경험치")]
[SerializeField] protected int expReward = 10;
public static System.Action<int> OnMonsterKilled; public static System.Action<int> OnMonsterKilled;
[Header("공통 사운드/이펙트")] [Header("공통 사운드/이펙트")]
@ -45,18 +47,28 @@ public abstract class MonsterClass : MonoBehaviour, IDamageable
animator = GetComponent<Animator>(); animator = GetComponent<Animator>();
agent = GetComponent<NavMeshAgent>(); agent = GetComponent<NavMeshAgent>();
audioSource = GetComponent<AudioSource>(); audioSource = GetComponent<AudioSource>();
// ⭐ 시작할 때 에이전트 속도를 스탯에 맞게 설정
if (agent != null) agent.speed = moveSpeed;
} }
protected virtual void OnEnable() protected virtual void OnEnable()
{ {
isDead = false; currentHP = maxHP;
OnHealthChanged?.Invoke(currentHP, maxHP);
playerTransform = GameObject.FindGameObjectWithTag("Player")?.transform; playerTransform = GameObject.FindGameObjectWithTag("Player")?.transform;
if (mobRenderer != null) mobRenderer.enabled = true; if (mobRenderer != null) mobRenderer.enabled = true;
Init(); Init();
if (MobUpdateManager.Instance != null) MobUpdateManager.Instance.RegisterMob(this); if (MobUpdateManager.Instance != null) MobUpdateManager.Instance.RegisterMob(this);
} }
public void ResetStats()
{
isDead = false;
currentHP = maxHP;
OnHealthChanged?.Invoke(currentHP, maxHP);
Collider col = GetComponent<Collider>();
if (col != null) col.enabled = true;
}
protected virtual void OnDisable() protected virtual void OnDisable()
{ {
if (MobUpdateManager.Instance != null) MobUpdateManager.Instance.UnregisterMob(this); if (MobUpdateManager.Instance != null) MobUpdateManager.Instance.UnregisterMob(this);
@ -68,43 +80,24 @@ public abstract class MonsterClass : MonoBehaviour, IDamageable
public void OnManagedUpdate() public void OnManagedUpdate()
{ {
if (isDead || playerTransform == null || !gameObject.activeInHierarchy) return; if (isDead || playerTransform == null || !gameObject.activeInHierarchy) return;
float distance = Vector3.Distance(transform.position, playerTransform.position); float distance = Vector3.Distance(transform.position, playerTransform.position);
// 1. 범위 밖 최적화
if (distance > optimizationDistance) if (distance > optimizationDistance)
{ {
StopMovement(); // ⭐ 여기서 Idle 애니메이션을 강제합니다. StopMovement();
if (mobRenderer != null && mobRenderer.enabled) mobRenderer.enabled = false; if (mobRenderer != null && mobRenderer.enabled) mobRenderer.enabled = false;
return; return;
} }
if (mobRenderer != null && !mobRenderer.enabled) mobRenderer.enabled = true; if (mobRenderer != null && !mobRenderer.enabled) mobRenderer.enabled = true;
if (mobRenderer != null && !mobRenderer.isVisible) { StopMovement(); return; }
// 2. 시야 밖 최적화 if (agent != null && agent.isOnNavMesh && agent.isStopped) agent.isStopped = false;
if (mobRenderer != null && !mobRenderer.isVisible)
{
StopMovement();
return;
}
if (agent != null && agent.isOnNavMesh && agent.isStopped)
{
agent.isStopped = false;
}
ExecuteAILogic(); ExecuteAILogic();
} }
// ⭐ [핵심 수정] 멈출 때 Idle 애니메이션을 즉시 실행합니다.
protected void StopMovement() protected void StopMovement()
{ {
if (agent != null && agent.isOnNavMesh) { agent.isStopped = true; agent.velocity = Vector3.zero; } if (agent != null && agent.isOnNavMesh) { agent.isStopped = true; agent.velocity = Vector3.zero; }
if (animator != null) if (animator != null) { animator.SetFloat("Speed", 0f); animator.Play(Monster_Idle); }
{
animator.SetFloat("Speed", 0f); // 블렌드 트리용
animator.Play(Monster_Idle); // ⭐ 상태 기반 애니메이션 강제 전환
}
} }
public virtual void TakeDamage(float amount) { OnDamaged(amount); } public virtual void TakeDamage(float amount) { OnDamaged(amount); }
@ -136,7 +129,7 @@ public abstract class MonsterClass : MonoBehaviour, IDamageable
{ {
if (isDead) return; if (isDead) return;
isDead = true; isDead = true;
OnMonsterKilled?.Invoke(expReward); OnMonsterKilled?.Invoke(expReward); // ⭐ 설정된 경험치 수치 전달
Collider col = GetComponent<Collider>(); Collider col = GetComponent<Collider>();
if (col != null) col.enabled = false; if (col != null) col.enabled = false;
if (agent && agent.isOnNavMesh) { agent.isStopped = true; agent.velocity = Vector3.zero; } if (agent && agent.isOnNavMesh) { agent.isStopped = true; agent.velocity = Vector3.zero; }

View File

@ -3,8 +3,8 @@ using UnityEngine.AI;
public class NormalMonster : MonsterClass public class NormalMonster : MonsterClass
{ {
[Header("전투")] [Header("전투 설정")]
[SerializeField] private float damage = 10f; // ⭐ 이 변수는 OnAttackHit에서 사용됩니다. // ❌ private float damage 삭제됨 (부모의 attackDamage 사용)
[SerializeField] private float attackRange = 2f; [SerializeField] private float attackRange = 2f;
[SerializeField] private float attackDelay = 1.5f; [SerializeField] private float attackDelay = 1.5f;
@ -14,9 +14,7 @@ public class NormalMonster : MonsterClass
[SerializeField] private string[] attackAnimations = { "Monster_Attack_1" }; [SerializeField] private string[] attackAnimations = { "Monster_Attack_1" };
[SerializeField] private string Monster_Walk = "Monster_Walk"; [SerializeField] private string Monster_Walk = "Monster_Walk";
// ❌ [에러 해결] Monster_Idle 변수가 여기서 삭제되었습니다. (부모인 MonsterClass 것을 사용합니다) [Header("AI 상세 설정")]
[Header("AI 설정")]
[SerializeField] private float stopBuffer = 0.3f; [SerializeField] private float stopBuffer = 0.3f;
[SerializeField] private float patrolRadius = 5f; [SerializeField] private float patrolRadius = 5f;
[SerializeField] private float patrolInterval = 2f; [SerializeField] private float patrolInterval = 2f;
@ -65,21 +63,20 @@ public class NormalMonster : MonsterClass
animator.Play(attackName, 0, 0f); animator.Play(attackName, 0, 0f);
} }
// ⭐ [경고 해결] damage 변수를 여기서 사용하여 사용되지 않는다는 경고를 없앱니다. // ⭐ [수정] 부모 클래스(MonsterClass)의 attackDamage를 플레이어에게 입힙니다.
public void OnAttackHit() public void OnAttackHit()
{ {
if (playerTransform == null || isHit || isDead) return; if (playerTransform == null || isHit || isDead) return;
if (playerTransform.TryGetComponent<PlayerHealth>(out var pHealth)) if (playerTransform.TryGetComponent<PlayerHealth>(out var pHealth))
{ {
pHealth.TakeDamage(damage); pHealth.TakeDamage(attackDamage); // ⭐ 부모의 변수 사용
Debug.Log($"[전투] 플레이어에게 {damage} 데미지 부여!"); Debug.Log($"[전투] {gameObject.name}이 {attackDamage} 데미지를 주었습니다!");
} }
} }
void UpdateMovementAnimation() void UpdateMovementAnimation()
{ {
if (isAttacking || isHit || isResting) return; if (isAttacking || isHit || isResting) return;
// ⭐ 부모 클래스의 Monster_Idle을 사용합니다.
if (agent.velocity.magnitude < 0.1f) animator.Play(Monster_Idle); if (agent.velocity.magnitude < 0.1f) animator.Play(Monster_Idle);
else animator.Play(Monster_Walk); else animator.Play(Monster_Walk);
} }

View File

@ -3,9 +3,9 @@
public class MonsterSpawner : MonoBehaviour public class MonsterSpawner : MonoBehaviour
{ {
[Header("--- 몹 스폰 설정 ---")] [Header("--- 몹 스폰 설정 ---")]
[SerializeField] private string mobTag = "NormalMob"; // 풀에 등록된 태그명 [SerializeField] private string mobTag = "NormalMob";
[SerializeField] private float spawnRange = 15f; // 플레이어 감지 범위 [SerializeField] private float spawnRange = 25f; // 플레이어 감지 범위 (조금 늘림)
[SerializeField] private float respawnCooldown = 3f; // 몹 사망 시 재소환 대기 시간 [SerializeField] private float respawnCooldown = 3f; // 죽었을 때만 적용되는 쿨타임
private GameObject _myMonster; private GameObject _myMonster;
private MonsterClass _monsterScript; private MonsterClass _monsterScript;
@ -19,25 +19,20 @@ public class MonsterSpawner : MonoBehaviour
private void Update() private void Update()
{ {
// ⭐ [안전장치] 플레이어를 못 찾았다면 계속 다시 찾습니다. if (_player == null) { FindPlayer(); return; }
if (_player == null)
{
FindPlayer();
return;
}
float dist = Vector3.Distance(transform.position, _player.position); float dist = Vector3.Distance(transform.position, _player.position);
// 1. 플레이어가 범위 안에 들어왔을 때 // 1. 플레이어가 범위 안에 들어왔을 때
if (dist <= spawnRange) if (dist <= spawnRange)
{ {
// 쿨타임이 지났고, 현재 관리하는 몹이 없을 때만 소환 // ⭐ [수정] 쿨타임이 지났고, 몹이 없거나 꺼져있다면 '재활성화' 시도
if (Time.time >= _nextSpawnTime && (_myMonster == null || !_myMonster.activeSelf)) if (Time.time >= _nextSpawnTime && (_myMonster == null || !_myMonster.activeSelf))
{ {
SpawnMonster(); SpawnMonster();
} }
} }
// 2. 플레이어가 범위 밖으로 나갔을 때 (회색 점 상태로 회수) // 2. 플레이어가 범위 밖으로 나갔을 때
else else
{ {
DespawnMonster(); DespawnMonster();
@ -52,12 +47,21 @@ public class MonsterSpawner : MonoBehaviour
private void SpawnMonster() private void SpawnMonster()
{ {
// 제네럴 오브젝트 풀에서 몹을 빌려옵니다. // ⭐ [핵심] 기존에 소환된 몹이 있고, 죽은 게 아니라면 단순히 켜기만 합니다!
if (_myMonster != null && _monsterScript != null && !_monsterScript.IsDead)
{
_myMonster.SetActive(true); // HP와 위치가 그대로 유지된 채로 켜집니다.
return;
}
// ⭐ 아예 처음 소환하거나, 죽어서 새로 뽑아야 할 때만 풀에서 가져옵니다.
_myMonster = GenericObjectPool.Instance.SpawnFromPool(mobTag, transform.position, transform.rotation); _myMonster = GenericObjectPool.Instance.SpawnFromPool(mobTag, transform.position, transform.rotation);
if (_myMonster != null) if (_myMonster != null)
{ {
_monsterScript = _myMonster.GetComponent<MonsterClass>(); _monsterScript = _myMonster.GetComponent<MonsterClass>();
// ❌ OnEnable에서 피가 안 채워지므로, 여기서 새로 태어났음을 알립니다.
_monsterScript.ResetStats();
} }
} }
@ -65,21 +69,21 @@ public class MonsterSpawner : MonoBehaviour
{ {
if (_myMonster != null && _myMonster.activeSelf) if (_myMonster != null && _myMonster.activeSelf)
{ {
// 몹이 살아있는 상태에서 멀어진 거라면 즉시 회수 // 몹이 살아있다면 풀로 돌려보내지 않고 그 자리에서 SetActive(false)만 합니다.
if (_monsterScript != null && !_monsterScript.IsDead) if (_monsterScript != null && !_monsterScript.IsDead)
{ {
_myMonster.SetActive(false); _myMonster.SetActive(false);
_nextSpawnTime = Time.time; // 멀어진 건 즉시 재생성 대기 // _nextSpawnTime을 갱신하지 않으므로 다시 범위에 들어오면 즉시 켜집니다.
} }
// 몹이 죽어서 사라진 거라면 지정된 쿨타임 적용 // 몹이 진짜 죽었다면 참조를 비우고 쿨타임을 적용합니다.
else if (_monsterScript != null && _monsterScript.IsDead) else if (_monsterScript != null && _monsterScript.IsDead)
{ {
_nextSpawnTime = Time.time + respawnCooldown; _nextSpawnTime = Time.time + respawnCooldown;
_myMonster = null; // 다음엔 새로 뽑아야 함
} }
} }
} }
// 에디터에서 스폰 범위를 시각적으로 확인
private void OnDrawGizmosSelected() private void OnDrawGizmosSelected()
{ {
Gizmos.color = Color.red; Gizmos.color = Color.red;

View File

@ -12,7 +12,7 @@ public class PlayerAnimator : MonoBehaviour
{ {
if (health != null) if (health != null)
{ {
health.OnHit += () => anim.SetTrigger("Hit"); health.OnHitEvent += () => anim.SetTrigger("Hit");
health.OnDead += () => anim.SetBool("Die", true); health.OnDead += () => anim.SetBool("Die", true);
} }
} }

View File

@ -21,7 +21,15 @@ public class PlayerAttack : MonoBehaviour
public float ChargeProgress => Mathf.Clamp01(_chargeTimer / fullChargeTime); public float ChargeProgress => Mathf.Clamp01(_chargeTimer / fullChargeTime);
public bool IsCharging => _isCharging; public bool IsCharging => _isCharging;
public bool IsAttacking => _isAttacking;
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// ⭐ [수정] 외부(Health.cs)에서 값을 수정할 수 있도록 set 추가
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
public bool IsAttacking
{
get => _isAttacking;
set => _isAttacking = value;
}
private void Update() private void Update()
{ {
@ -63,20 +71,17 @@ public class PlayerAttack : MonoBehaviour
} }
} }
// ⭐ [수정 완료] 오직 3타 막타일 때만 카메라 연출을 실행합니다.
public void OnAttackShake() public void OnAttackShake()
{ {
if (CinemachineShake.Instance == null) return; if (CinemachineShake.Instance == null) return;
// 3번째 콤보일 때만 묵직하게 흔들어줍니다.
if (_comboCount == 3) if (_comboCount == 3)
{ {
Debug.Log("<color=orange>[Shake]</color> 3타 막타 카메라 연출 실행!"); Debug.Log("<color=orange>[Shake]</color> 3타 막타 카메라 연출 실행!");
CinemachineShake.Instance.HitSlow(0.2f, 0.05f); // 히트 슬로우 CinemachineShake.Instance.HitSlow(0.2f, 0.05f);
CinemachineShake.Instance.CameraKick(10f); // 카메라 킥 CinemachineShake.Instance.CameraKick(10f);
CinemachineShake.Instance.ShakeAttack(); // 진동 CinemachineShake.Instance.ShakeAttack();
} }
// 🚫 else 구문을 삭제하여 1, 2타 시에는 아무것도 하지 않습니다.
} }
public void OnAttackEnd() public void OnAttackEnd()

View File

@ -2,11 +2,12 @@
using System.Collections; using System.Collections;
/// <summary> /// <summary>
/// CharacterController 기반 플레이어 이동 (완전판) /// CharacterController 기반 플레이어 이동 (최종 버전)
/// - 벽 뚫림 방지 /// - 벽 뚫림 방지
/// - 물리 오브젝트 밀기
/// - 중력 처리 /// - 중력 처리
/// - 대시 충돌 감지 /// - 대시 충돌 감지
/// - 무기 충돌 문제 해결
/// - 물리 상호작용 제거 (몬스터 안 밀림)
/// </summary> /// </summary>
[RequireComponent(typeof(CharacterController))] [RequireComponent(typeof(CharacterController))]
public class PlayerMovement : MonoBehaviour public class PlayerMovement : MonoBehaviour
@ -32,15 +33,12 @@ public class PlayerMovement : MonoBehaviour
[Header("=== 중력 설정 ===")] [Header("=== 중력 설정 ===")]
[SerializeField] private float gravity = -20f; [SerializeField] private float gravity = -20f;
[Header("=== 물리 상호작용 설정 ===")] [Header("=== 충돌 설정 ===")]
[Tooltip("일반 이동 시 물체 밀기 힘")] [Tooltip("무기 레이어 (이 레이어와는 충돌하지 않음)")]
[SerializeField] private float pushPower = 2f; [SerializeField] private LayerMask weaponLayer;
[Tooltip("대시 중 물체 밀기 힘 (더 강함)")] [Tooltip("플레이어가 서 있어야 하는 최소 높이 (버그 방지)")]
[SerializeField] private float dashPushPower = 5f; [SerializeField] private float minGroundHeight = 0.1f;
[Tooltip("밀 수 있는 최대 질량 (kg)")]
[SerializeField] private float maxPushMass = 10f;
// 이동 상태 // 이동 상태
private Vector3 _moveDir; private Vector3 _moveDir;
@ -49,6 +47,9 @@ public class PlayerMovement : MonoBehaviour
private float _lastDashTime; private float _lastDashTime;
private float _verticalVelocity; private float _verticalVelocity;
// 디버그용
private float _initialYPosition;
private void Awake() private void Awake()
{ {
_controller = GetComponent<CharacterController>(); _controller = GetComponent<CharacterController>();
@ -57,6 +58,51 @@ public class PlayerMovement : MonoBehaviour
{ {
Debug.LogError("[PlayerMovement] CharacterController가 필요합니다!"); Debug.LogError("[PlayerMovement] CharacterController가 필요합니다!");
} }
// 초기 높이 저장
_initialYPosition = transform.position.y;
}
private void Start()
{
// ⭐ 무기와 플레이어 레이어 간 충돌 무시 설정
SetupLayerCollision();
}
/// <summary>
/// 레이어 충돌 설정 (무기는 플레이어와 충돌하지 않음)
/// </summary>
private void SetupLayerCollision()
{
// "Player" 레이어와 "Weapon" 레이어 간 충돌 무시
int playerLayer = gameObject.layer;
// weaponLayer가 설정되어 있으면 충돌 무시
if (weaponLayer != 0)
{
// LayerMask에서 실제 레이어 번호 추출
int weaponLayerIndex = GetLayerFromMask(weaponLayer);
if (weaponLayerIndex >= 0)
{
Physics.IgnoreLayerCollision(playerLayer, weaponLayerIndex, true);
Debug.Log($"[PlayerMovement] {LayerMask.LayerToName(playerLayer)}와 {LayerMask.LayerToName(weaponLayerIndex)} 간 충돌 무시 설정 완료");
}
}
}
/// <summary>
/// LayerMask에서 레이어 인덱스 추출
/// </summary>
private int GetLayerFromMask(LayerMask mask)
{
int layerNumber = 0;
int layer = mask.value;
while (layer > 1)
{
layer = layer >> 1;
layerNumber++;
}
return layerNumber;
} }
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
@ -120,6 +166,9 @@ public class PlayerMovement : MonoBehaviour
_controller.Move(motion); _controller.Move(motion);
// ⭐ 높이 제한 체크 (버그 방지)
CheckAbnormalHeight();
// 5. 애니메이션 // 5. 애니메이션
UpdateAnimation(); UpdateAnimation();
} }
@ -140,6 +189,39 @@ public class PlayerMovement : MonoBehaviour
{ {
ApplyGravity(); ApplyGravity();
_controller.Move(new Vector3(0, _verticalVelocity * Time.deltaTime, 0)); _controller.Move(new Vector3(0, _verticalVelocity * Time.deltaTime, 0));
// ⭐ 높이 제한 체크
CheckAbnormalHeight();
}
/// <summary>
/// ⭐ 비정상적으로 높이 올라갔는지 체크 (무기 충돌 버그 방지)
/// </summary>
private void CheckAbnormalHeight()
{
// 땅에서 너무 높이 떠있으면 강제로 내림
RaycastHit hit;
if (Physics.Raycast(transform.position, Vector3.down, out hit, 100f))
{
float heightAboveGround = transform.position.y - hit.point.y;
// 땅에서 일정 높이 이상 떠있고, 땅에 닿지 않았다면
if (heightAboveGround > 3f && !_controller.isGrounded)
{
// 강제로 땅 근처로 이동
Vector3 correctedPos = transform.position;
correctedPos.y = hit.point.y + _controller.height / 2f + minGroundHeight;
// CharacterController는 enabled 끄고 위치 변경
_controller.enabled = false;
transform.position = correctedPos;
_controller.enabled = true;
_verticalVelocity = 0f;
Debug.LogWarning("[PlayerMovement] 비정상적인 높이 감지! 위치 보정함");
}
}
} }
private void UpdateAnimation() private void UpdateAnimation()
@ -174,9 +256,6 @@ public class PlayerMovement : MonoBehaviour
// ✅ 벽 충돌 감지 // ✅ 벽 충돌 감지
CollisionFlags flags = _controller.Move(dashMotion); CollisionFlags flags = _controller.Move(dashMotion);
// 벽에 부딪히면 대시 조기 종료 (선택사항)
// if ((flags & CollisionFlags.Sides) != 0) break;
yield return null; yield return null;
} }
@ -184,38 +263,6 @@ public class PlayerMovement : MonoBehaviour
_isDashing = false; _isDashing = false;
} }
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// ⭐ 물리 상호작용 (핵심!)
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
/// <summary>
/// CharacterController가 물체와 충돌할 때 호출됨
/// </summary>
private void OnControllerColliderHit(ControllerColliderHit hit)
{
// Rigidbody 확인
Rigidbody body = hit.collider.attachedRigidbody;
// Rigidbody 없거나 Kinematic이면 밀 수 없음
if (body == null || body.isKinematic) return;
// 너무 무거운 물체는 밀 수 없음
if (body.mass > maxPushMass) return;
// 바닥/천장 충돌은 무시
if (hit.moveDirection.y < -0.3f || hit.moveDirection.y > 0.3f) return;
// 💪 밀기 방향 계산
Vector3 pushDir = new Vector3(hit.moveDirection.x, 0, hit.moveDirection.z);
pushDir.Normalize();
// 대시 중이면 더 강한 힘
float power = _isDashing ? dashPushPower : pushPower;
// ✅ 힘 적용!
body.AddForce(pushDir * power, ForceMode.Impulse);
}
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 유틸리티 // 유틸리티
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

View File

@ -18,7 +18,7 @@ PhysicsManager:
m_ClothInterCollisionDistance: 0 m_ClothInterCollisionDistance: 0
m_ClothInterCollisionStiffness: 0 m_ClothInterCollisionStiffness: 0
m_ContactsGeneration: 1 m_ContactsGeneration: 1
m_LayerCollisionMatrix: fffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff m_LayerCollisionMatrix: fffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfffffefdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
m_SimulationMode: 0 m_SimulationMode: 0
m_AutoSyncTransforms: 0 m_AutoSyncTransforms: 0
m_ReuseCollisionCallbacks: 1 m_ReuseCollisionCallbacks: 1