Compare commits

..

16 Commits

Author SHA1 Message Date
f3a995d297 chore: Unity 디렉토리 메타 파일 추가
DownloadCache, SidekickCharacters, SyntyPackageHelper 메타 파일

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-16 09:48:21 +09:00
91a4d51c5e chore: 씬 및 프리팹 업데이트
테스트 씬 및 플레이어 프리팹 업데이트

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-16 09:48:03 +09:00
1955e1fab0 feat: AI Behavior 사망 조건 추가
- IsDieCondition: Behavior Graph에서 사용할 사망 확인 조건 추가
- Behavior Graph: 사망 상태 처리 로직 업데이트
- asmdef: Unity.Behavior.SerializableGUID 의존성 추가

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-16 09:47:45 +09:00
041a83a015 feat: 스킬 시스템 사망 상태 처리
사망 상태에서 스킬 사용 및 이펙트 발동 방지

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-16 09:47:27 +09:00
6954e8b80b feat: 플레이어 사망 애니메이션 네트워크 동기화
PlayDeathAnimationRpc로 모든 클라이언트에 사망 애니메이션 동기화

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-16 09:47:13 +09:00
5238b65dc2 feat: 적 사망 처리 시스템 개선
- EnemyBase: PlayDeathAnimationRpc로 모든 클라이언트에 사망 애니메이션 동기화
- EnemyAnimationController: 사망 상태에서 애니메이션 업데이트 및 트리거 중단
- BossEnemy: HandleDeath에서 AI 정지 순서 개선 (enabled=false 먼저)

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-16 09:46:56 +09:00
e31ecadc81 feat: 사망 애니메이션 루프 및 컨트롤러 업데이트
Death_Pose_Default을 Death_Default_Loop로 교체하여 사망 애니메이션 루프 지원

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-16 09:46:37 +09:00
e7e3708c44 chore: Unity 디렉토리 메타 파일 추가
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-14 15:09:47 +09:00
067fca11c9 chore: .gitignore, 씬 및 UI/무기 디렉토리 업데이트
- .gitignore: External packages, Sketchfab, Wwise 무시 추가
- Colosseum.slnx: 솔루션 파일 업데이트
- Test.unity: 게임 매니저 및 UI 연동
- UI/, Weapons/ 디렉토리 추가

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-14 15:09:27 +09:00
11235e6b2c chore: 애니메이션 컨트롤러 및 프리팹 업데이트
- 플레이어/적 애니메이션 컨트롤러 업데이트
- 플레이어 프리팹에 관전/사망 컴포넌트 추가
- 보스 템플릿 프리팹 추가
- Human-Custom 캐릭터 프리팹 추가

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-14 15:09:14 +09:00
27c2fdf881 feat: 사망 애니메이션 및 무기 모델 추가
- Death_Default.fbx: 사망 애니메이션
- Death_Pose_Default.fbx: 사망 포즈
- SM_Wep_Sword_01.fbx: 검 무기 모델

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-14 15:08:57 +09:00
aeb4fc2847 feat: AI 타겟팅 개선 - 사망한 대상 무시
- FindTargetAction: IDamageable.IsDead 체크로 사망한 타겟 제외
- SetTargetInRangeAction: 사망한 타겟을 거리 검색에서 제외
- HasTargetCondition: 타겟 생존 여부 추가 확인
- BossArea: FindObjectOfType → FindFirstObjectByType 변경

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-14 15:08:47 +09:00
00233ee977 feat: 게임 오버 및 승리 UI 구현
- GameOverUI: 게임 오버 화면 표시
- VictoryUI: 보스 처치 시 승리 화면 표시
- VictoryEffect: 슬로우 모션, 카메라 연출, 이펙트 재생

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-14 15:08:34 +09:00
0a1aeea825 feat: 플레이어 관전 시스템 추가
- PlayerSpectator: 사망한 플레이어가 살아있는 플레이어 관찰
- PlayerCamera: SetTarget/ResetToPlayer/SnapToTarget 메서드 추가
- PlayerMovement: OnEnable/OnDisable에서 입력 액션 관리
- Tab 키로 관전 대상 전환 기능

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-14 15:08:18 +09:00
62306a34a2 feat: 플레이어 사망 및 리스폰 시스템 구현
- isDead 네트워크 변수 추가로 사망 상태 동기화
- 사망 시 이동/스킬 비활성화 및 사망 애니메이션 재생
- Respawn() 메서드로 체력/마나 회복 및 컴포넌트 재활성화
- 스킬 입력에서 사망 상태 체크 추가

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-14 15:08:03 +09:00
5e61dbf7e6 feat: 게임 상태 관리 시스템 추가
게임 전체 상태(Waiting, Playing, GameOver, Victory)를 관리하는 GameManager 구현.
플레이어 전멸 시 게임 오버, 보스 처치 시 승리 처리.
씬 로드 시 플레이어 리스폰 및 카메라 재설정 지원.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-14 15:07:49 +09:00
70 changed files with 235356 additions and 1227 deletions

13
.gitignore vendored
View File

@@ -74,3 +74,16 @@ crashlytics-build.properties
/[Aa]ssets/[Ss]treamingAssets/aa/*
.vscode
# External packages (not tracked)
Assets/External/SidekickCharacters/
Assets/External/SyntyPackageHelper 1/
Assets/DownloadCache/
# Sketchfab files
Assets/External_Used/Models/Human-Custom.sk
Assets/External_Used/Models/Human-Custom.sk.meta
# Wwise audio project
Colosseum.slnx

View File

@@ -27,6 +27,53 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-7355565198356877363
AnimatorStateTransition:
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: 8846385207969213533}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.8557693
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-6146543620670552976
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Die
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 4717780193306342999}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1107 &-5279407469294999195
AnimatorStateMachine:
serializedVersion: 6
@@ -44,13 +91,20 @@ AnimatorStateMachine:
m_Position: {x: 290, y: 180, z: 0}
- serializedVersion: 1
m_State: {fileID: -2487449162152911812}
m_Position: {x: -210, y: 350, z: 0}
m_Position: {x: -220, y: 350, z: 0}
- serializedVersion: 1
m_State: {fileID: 4717780193306342999}
m_Position: {x: -220, y: 180, z: 0}
- serializedVersion: 1
m_State: {fileID: 8846385207969213533}
m_Position: {x: -220, y: 80, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_AnyStateTransitions:
- {fileID: -6146543620670552976}
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: -190, y: 270, z: 0}
m_AnyStatePosition: {x: -200, y: 270, z: 0}
m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
@@ -192,6 +246,12 @@ AnimatorController:
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Die
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
@@ -230,6 +290,82 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &4717780193306342999
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Die
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: -7355565198356877363}
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: 8003560683512829103, guid: dce2c044329372a439fffb8c2850a005, type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &7571880184799686224
AnimatorStateTransition:
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: 8846385207969213533}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 1
m_HasExitTime: 1
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &8846385207969213533
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Death Loop
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 7571880184799686224}
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: 2473861289378347930, guid: c1982a19fac5e77439ec3efd79eeace2, type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &8997152603305261974
AnimatorStateTransition:
m_ObjectHideFlags: 1

View File

@@ -76,10 +76,14 @@ AnimatorStateMachine:
- serializedVersion: 1
m_State: {fileID: -2487449162152911812}
m_Position: {x: -210, y: 350, z: 0}
- serializedVersion: 1
m_State: {fileID: -1032254959699123210}
m_Position: {x: -450, y: 270, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions:
- {fileID: -754003289131015157}
- {fileID: 469741948129995159}
- {fileID: 6228136561094308872}
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
@@ -180,6 +184,32 @@ BlendTree:
m_UseAutomaticThresholds: 1
m_NormalizedBlendValues: 0
m_BlendType: 0
--- !u!1102 &-1032254959699123210
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Die
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: 8003560683512829103, guid: dce2c044329372a439fffb8c2850a005, type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-754003289131015157
AnimatorStateTransition:
m_ObjectHideFlags: 1
@@ -287,6 +317,12 @@ AnimatorController:
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Die
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
@@ -376,6 +412,31 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &6228136561094308872
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Die
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -1032254959699123210}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &7693173606830535998
AnimatorState:
serializedVersion: 6

View File

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

View File

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

View File

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

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -55,14 +55,7 @@ ModelImporter:
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events:
- time: 0
functionName: OnEffect
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
- time: 0.50297606
- time: 0.4984817
functionName: OnEffect
data:
objectReferenceParameter: {instanceID: 0}

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,83 @@
fileFormatVersion: 2
guid: c6e2f484ffcec214da9c765711b562f4
timeCreated: 1554785616
licenseType: Store
ModelImporter:
serializedVersion: 19
fileIDToRecycleName:
100000: //RootNode
400000: //RootNode
2300000: //RootNode
3300000: //RootNode
4300000: SM_Wep_Sword_01
9500000: //RootNode
materials:
importMaterials: 0
materialName: 0
materialSearch: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
importBlendShapes: 0
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
optimizeMeshForGPU: 0
keepQuads: 0
weldVertices: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVPackMargin: 4
useFileScale: 1
tangentSpace:
normalSmoothAngle: 0
normalImportMode: 1
tangentImportMode: 3
importAnimation: 0
copyAvatar: 0
humanDescription:
serializedVersion: 2
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
rootMotionBoneName:
rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1}
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
animationType: 0
humanoidOversampling: 1
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -35,7 +35,8 @@ MonoBehaviour:
- rid: 8805855836547056135
- rid: 8805855836547056335
- rid: 8805855841097090010
m_VersionTimestamp: 639088753701246820
- rid: 8805855941168464100
m_VersionTimestamp: 639092245458294623
m_CommandBuffer:
m_Commands: []
m_RuntimeBlackboardAsset: {fileID: 6694785542709420471}
@@ -102,6 +103,16 @@ MonoBehaviour:
IsExposed: 1
m_IsShared: 0
m_Value: {fileID: 11400000, guid: 4f40629d4d334434285e8fdec3714536, type: 2}
- rid: 8805855941168464100
type: {class: 'TypedVariableModel`1[[System.Boolean, mscorlib]]', ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
data:
ID:
m_Value0: 2997173512430605425
m_Value1: 14990413519379198129
Name: Die
IsExposed: 1
m_IsShared: 0
m_Value: 0
--- !u!114 &-3933356984444701103
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -134,8 +145,8 @@ MonoBehaviour:
rid: 8805855836547055694
BlackboardGroupReferences: []
Root:
rid: 8805855846311395537
m_VersionTimestamp: 639088753702668748
rid: 8805855941168464690
m_VersionTimestamp: 639092257330260006
- rid: 8805855836547055694
type: {class: BlackboardReference, ns: Unity.Behavior, asm: Unity.Behavior}
data:
@@ -146,13 +157,70 @@ MonoBehaviour:
type: {class: Blackboard, ns: Unity.Behavior, asm: Unity.Behavior}
data:
m_Variables:
- rid: 8805855846311395539
- rid: 8805855846311395540
- rid: 8805855846311395541
- rid: 8805855846311395542
- rid: 8805855846311395543
- rid: 8805855846311395544
- rid: 8805855846311395537
- rid: 8805855941168464571
- rid: 8805855941168464572
- rid: 8805855941168464573
- rid: 8805855941168464574
- rid: 8805855941168464575
- rid: 8805855941168464576
- rid: 8805855941168464577
- rid: 8805855941168464571
type: {class: 'BlackboardVariable`1[[UnityEngine.GameObject, UnityEngine.CoreModule]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 1
m_Value1: 0
Name: Self
m_Value: {fileID: 0}
- rid: 8805855941168464572
type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 6179663786753870576
m_Value1: 13045418693957266795
Name: AttackRange
m_Value: 3
- rid: 8805855941168464573
type: {class: 'BlackboardVariable`1[[UnityEngine.GameObject, UnityEngine.CoreModule]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 7475528897857689991
m_Value1: 9373801459200419976
Name: Target
m_Value: {fileID: 0}
- rid: 8805855941168464574
type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 16869927256715422330
m_Value1: 821422556084951432
Name: SightRange
m_Value: 20
- rid: 8805855941168464575
type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 8799674741299202428
m_Value1: 6075552970323151189
Name: MoveSpeed
m_Value: 0
- rid: 8805855941168464576
type: {class: 'BlackboardVariable`1[[Colosseum.Skills.SkillData, Colosseum.Game]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 15894527964846533412
m_Value1: 3771131609012049390
Name: Default Attack Skill
m_Value: {fileID: 11400000, guid: 4f40629d4d334434285e8fdec3714536, type: 2}
- rid: 8805855941168464577
type: {class: 'BlackboardVariable`1[[System.Boolean, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 2997173512430605425
m_Value1: 14990413519379198129
Name: Die
m_Value: 0
- rid: 8805855941168464690
type: {class: Start, ns: Unity.Behavior, asm: Unity.Behavior}
data:
ID:
@@ -163,10 +231,46 @@ MonoBehaviour:
m_Parent:
rid: -2
m_Child:
rid: 8805855846311395538
Repeat: 1
rid: 8805855941168464691
Repeat: 0
AllowMultipleRepeatsPerTick: 0
- rid: 8805855846311395538
- rid: 8805855941168464691
type: {class: RepeaterModifier, ns: Unity.Behavior, asm: Unity.Behavior}
data:
ID:
m_Value0: 16903089648015682040
m_Value1: 5621269674286214316
Graph:
rid: 8805855836547055693
m_Parent:
rid: 8805855941168464690
m_Child:
rid: 8805855941168464692
m_AllowMultipleRepeatsPerTick: 0
- rid: 8805855941168464692
type: {class: BranchingConditionComposite, ns: Unity.Behavior, asm: Unity.Behavior}
data:
ID:
m_Value0: 3882872508468950798
m_Value1: 3938133446346283639
Graph:
rid: 8805855836547055693
m_Parent:
rid: 8805855941168464691
m_Children:
- rid: 8805855941168464693
m_RegisteredObservers: []
m_Conditions:
- rid: 8805855941168464694
m_RequiresAllConditions: 0
True:
rid: -2
False:
rid: 8805855941168464693
m_CurrentChild:
rid: -2
m_ObserverType: 0
- rid: 8805855941168464693
type: {class: SequenceComposite, ns: Unity.Behavior, asm: Unity.Behavior}
data:
ID:
@@ -175,60 +279,23 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
rid: 8805855846311395537
rid: 8805855941168464692
m_Children:
- rid: 8805855846311395545
- rid: 8805855846311395546
- rid: 8805855941168464695
- rid: 8805855941168464696
m_RegisteredObservers: []
- rid: 8805855846311395539
type: {class: 'BlackboardVariable`1[[UnityEngine.GameObject, UnityEngine.CoreModule]]', ns: Unity.Behavior, asm: Unity.Behavior}
- rid: 8805855941168464694
type: {class: VariableComparisonCondition, ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 1
m_Value1: 0
Name: Self
m_Value: {fileID: 0}
- rid: 8805855846311395540
type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 6179663786753870576
m_Value1: 13045418693957266795
Name: AttackRange
m_Value: 3
- rid: 8805855846311395541
type: {class: 'BlackboardVariable`1[[UnityEngine.GameObject, UnityEngine.CoreModule]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 7475528897857689991
m_Value1: 9373801459200419976
Name: Target
m_Value: {fileID: 0}
- rid: 8805855846311395542
type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 16869927256715422330
m_Value1: 821422556084951432
Name: SightRange
m_Value: 20
- rid: 8805855846311395543
type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 8799674741299202428
m_Value1: 6075552970323151189
Name: MoveSpeed
m_Value: 0
- rid: 8805855846311395544
type: {class: 'BlackboardVariable`1[[Colosseum.Skills.SkillData, Colosseum.Game]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 15894527964846533412
m_Value1: 3771131609012049390
Name: Default Attack Skill
m_Value: {fileID: 11400000, guid: 4f40629d4d334434285e8fdec3714536, type: 2}
- rid: 8805855846311395545
Graph:
rid: 8805855836547055693
Variable:
rid: 8805855941168464577
Operator:
rid: 8805855941168464697
ComparisonValue:
rid: 8805855941168464698
- rid: 8805855941168464695
type: {class: SetTargetInRangeAction, ns: , asm: Colosseum.Game}
data:
ID:
@@ -237,14 +304,14 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
rid: 8805855846311395538
rid: 8805855941168464693
Target:
rid: 8805855846311395541
rid: 8805855941168464573
Tag:
rid: 8805855846311395547
rid: 8805855941168464699
Range:
rid: 8805855846311395548
- rid: 8805855846311395546
rid: 8805855941168464700
- rid: 8805855941168464696
type: {class: BranchingConditionComposite, ns: Unity.Behavior, asm: Unity.Behavior}
data:
ID:
@@ -253,22 +320,38 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
rid: 8805855846311395538
rid: 8805855941168464693
m_Children:
- rid: 8805855846311395549
- rid: 8805855846311395550
- rid: 8805855941168464701
- rid: 8805855941168464702
m_RegisteredObservers: []
m_Conditions:
- rid: 8805855846311395551
- rid: 8805855941168464703
m_RequiresAllConditions: 0
True:
rid: 8805855846311395549
rid: 8805855941168464701
False:
rid: 8805855846311395550
rid: 8805855941168464702
m_CurrentChild:
rid: -2
m_ObserverType: 0
- rid: 8805855846311395547
- rid: 8805855941168464697
type: {class: 'BlackboardVariable`1[[Unity.Behavior.ConditionOperator, Unity.Behavior]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 0
m_Value1: 0
Name:
m_Value: 0
- rid: 8805855941168464698
type: {class: 'BlackboardVariable`1[[System.Boolean, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 0
m_Value1: 0
Name:
m_Value: 1
- rid: 8805855941168464699
type: {class: 'BlackboardVariable`1[[System.String, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
@@ -276,7 +359,7 @@ MonoBehaviour:
m_Value1: 0
Name:
m_Value: Player
- rid: 8805855846311395548
- rid: 8805855941168464700
type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
@@ -284,7 +367,7 @@ MonoBehaviour:
m_Value1: 0
Name:
m_Value: 10
- rid: 8805855846311395549
- rid: 8805855941168464701
type: {class: BranchingConditionComposite, ns: Unity.Behavior, asm: Unity.Behavior}
data:
ID:
@@ -293,22 +376,22 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
rid: 8805855846311395546
rid: 8805855941168464696
m_Children:
- rid: 8805855846311395552
- rid: 8805855846311395553
- rid: 8805855941168464704
- rid: 8805855941168464705
m_RegisteredObservers: []
m_Conditions:
- rid: 8805855846311395554
- rid: 8805855941168464706
m_RequiresAllConditions: 0
True:
rid: 8805855846311395552
rid: 8805855941168464704
False:
rid: 8805855846311395553
rid: 8805855941168464705
m_CurrentChild:
rid: -2
m_ObserverType: 0
- rid: 8805855846311395550
- rid: 8805855941168464702
type: {class: WaitAction, ns: , asm: Colosseum.Game}
data:
ID:
@@ -317,21 +400,21 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
rid: 8805855846311395546
rid: 8805855941168464696
Duration:
rid: 8805855846311395555
- rid: 8805855846311395551
rid: 8805855941168464707
- rid: 8805855941168464703
type: {class: VariableComparisonCondition, ns: Unity.Behavior, asm: Unity.Behavior}
data:
Graph:
rid: 8805855836547055693
Variable:
rid: 8805855846311395541
rid: 8805855941168464573
Operator:
rid: 8805855846311395556
rid: 8805855941168464708
ComparisonValue:
rid: 8805855846311395557
- rid: 8805855846311395552
rid: 8805855941168464709
- rid: 8805855941168464704
type: {class: SequenceComposite, ns: Unity.Behavior, asm: Unity.Behavior}
data:
ID:
@@ -340,12 +423,12 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
rid: 8805855846311395549
rid: 8805855941168464701
m_Children:
- rid: 8805855846311395558
- rid: 8805855846311395559
- rid: 8805855941168464710
- rid: 8805855941168464711
m_RegisteredObservers: []
- rid: 8805855846311395553
- rid: 8805855941168464705
type: {class: ParallelAllComposite, ns: Unity.Behavior, asm: Unity.Behavior}
data:
ID:
@@ -354,25 +437,25 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
rid: 8805855846311395549
rid: 8805855941168464701
m_Children:
- rid: 8805855846311395560
- rid: 8805855846311395561
- rid: 8805855941168464712
- rid: 8805855941168464713
m_RegisteredObservers: []
- rid: 8805855846311395554
- rid: 8805855941168464706
type: {class: CheckDistanceCondition, ns: Unity.Behavior, asm: Unity.Behavior}
data:
Graph:
rid: 8805855836547055693
Transform:
rid: 8805855846311395562
rid: 8805855941168464714
Target:
rid: 8805855846311395563
rid: 8805855941168464715
Operator:
rid: 8805855846311395564
rid: 8805855941168464716
Threshold:
rid: 8805855846311395540
- rid: 8805855846311395555
rid: 8805855941168464572
- rid: 8805855941168464707
type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
@@ -380,7 +463,7 @@ MonoBehaviour:
m_Value1: 0
Name:
m_Value: 1
- rid: 8805855846311395556
- rid: 8805855941168464708
type: {class: 'BlackboardVariable`1[[Unity.Behavior.ConditionOperator, Unity.Behavior]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
@@ -388,7 +471,7 @@ MonoBehaviour:
m_Value1: 0
Name:
m_Value: 1
- rid: 8805855846311395557
- rid: 8805855941168464709
type: {class: 'BlackboardVariable`1[[UnityEngine.GameObject, UnityEngine.CoreModule]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
@@ -396,7 +479,7 @@ MonoBehaviour:
m_Value1: 0
Name:
m_Value: {fileID: 0}
- rid: 8805855846311395558
- rid: 8805855941168464710
type: {class: RotateToTargetAction, ns: , asm: Colosseum.Game}
data:
ID:
@@ -405,14 +488,14 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
rid: 8805855846311395552
rid: 8805855941168464704
Target:
rid: 8805855846311395541
rid: 8805855941168464573
RotationSpeed:
rid: 8805855846311395565
rid: 8805855941168464717
AngleThreshold:
rid: 8805855846311395566
- rid: 8805855846311395559
rid: 8805855941168464718
- rid: 8805855941168464711
type: {class: UseSkillAction, ns: , asm: Colosseum.Game}
data:
ID:
@@ -421,10 +504,10 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
rid: 8805855846311395552
rid: 8805855941168464704
"\uC2A4\uD0AC":
rid: 8805855846311395544
- rid: 8805855846311395560
rid: 8805855941168464576
- rid: 8805855941168464712
type: {class: RotateToTargetAction, ns: , asm: Colosseum.Game}
data:
ID:
@@ -433,14 +516,14 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
rid: 8805855846311395553
rid: 8805855941168464705
Target:
rid: 8805855846311395541
rid: 8805855941168464573
RotationSpeed:
rid: 8805855846311395567
rid: 8805855941168464719
AngleThreshold:
rid: 8805855846311395568
- rid: 8805855846311395561
rid: 8805855941168464720
- rid: 8805855941168464713
type: {class: ChaseTargetAction, ns: , asm: Colosseum.Game}
data:
ID:
@@ -449,14 +532,14 @@ MonoBehaviour:
Graph:
rid: 8805855836547055693
m_Parent:
rid: 8805855846311395553
rid: 8805855941168464705
Target:
rid: 8805855846311395541
rid: 8805855941168464573
Speed:
rid: 8805855846311395569
rid: 8805855941168464721
StopDistance:
rid: 8805855846311395570
- rid: 8805855846311395562
rid: 8805855941168464722
- rid: 8805855941168464714
type: {class: 'GameObjectToComponentBlackboardVariable`1[[UnityEngine.Transform, UnityEngine.CoreModule]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
@@ -465,8 +548,8 @@ MonoBehaviour:
Name:
m_Value: {fileID: 0}
m_LinkedVariable:
rid: 8805855846311395539
- rid: 8805855846311395563
rid: 8805855941168464571
- rid: 8805855941168464715
type: {class: 'GameObjectToComponentBlackboardVariable`1[[UnityEngine.Transform, UnityEngine.CoreModule]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
@@ -475,8 +558,8 @@ MonoBehaviour:
Name:
m_Value: {fileID: 0}
m_LinkedVariable:
rid: 8805855846311395541
- rid: 8805855846311395564
rid: 8805855941168464573
- rid: 8805855941168464716
type: {class: 'BlackboardVariable`1[[Unity.Behavior.ConditionOperator, Unity.Behavior]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
@@ -484,7 +567,7 @@ MonoBehaviour:
m_Value1: 0
Name:
m_Value: 5
- rid: 8805855846311395565
- rid: 8805855941168464717
type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
@@ -492,7 +575,7 @@ MonoBehaviour:
m_Value1: 0
Name:
m_Value: 10
- rid: 8805855846311395566
- rid: 8805855941168464718
type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
@@ -500,7 +583,7 @@ MonoBehaviour:
m_Value1: 0
Name:
m_Value: 5
- rid: 8805855846311395567
- rid: 8805855941168464719
type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
@@ -508,7 +591,7 @@ MonoBehaviour:
m_Value1: 0
Name:
m_Value: 10
- rid: 8805855846311395568
- rid: 8805855941168464720
type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
@@ -516,7 +599,7 @@ MonoBehaviour:
m_Value1: 0
Name:
m_Value: 5
- rid: 8805855846311395569
- rid: 8805855941168464721
type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
@@ -524,7 +607,7 @@ MonoBehaviour:
m_Value1: 0
Name:
m_Value: 0
- rid: 8805855846311395570
- rid: 8805855941168464722
type: {class: 'BlackboardVariable`1[[System.Single, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
@@ -561,7 +644,11 @@ MonoBehaviour:
- rid: 8805855841097089766
- rid: 8805855846311395415
- rid: 8805855846311395454
m_VersionTimestamp: 639088753702668748
- rid: 8805855941168464148
- rid: 8805855941168464149
- rid: 8805855941168464150
- rid: 8805855941168464612
m_VersionTimestamp: 639092257330260006
m_SerializedVersion: 2
m_DebugInfo: {fileID: -6758363554468061369}
m_RuntimeGraph: {fileID: -3933356984444701103}
@@ -710,6 +797,16 @@ MonoBehaviour:
Tooltip:
NamedChildren: []
IsPlaceholder: 0
- Name: Repeat
Story:
RuntimeTypeString: Unity.Behavior.RepeaterModifier, Unity.Behavior, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
RuntimeTypeID:
m_Value0: 3696095273264312494
m_Value1: 14191201703811421854
Variables: []
NamedChildren: []
IsPlaceholder: 0
m_Blackboards: []
m_MainBlackboardAuthoringAsset: {fileID: -6591390698989283165}
m_CommandBuffer:
@@ -726,7 +823,7 @@ MonoBehaviour:
- rid: 8805855836547055698
type: {class: StartNodeModel, ns: Unity.Behavior, asm: Unity.Behavior.Authoring}
data:
Position: {x: 300.00003, y: -65.20001}
Position: {x: 211.99992, y: -365.45004}
ID:
m_Value0: 8361680655506702021
m_Value1: 11075116708293476273
@@ -740,7 +837,7 @@ MonoBehaviour:
m_Value0: 3335272451348827663
m_Value1: 11549843281177505721
m_FieldValues: []
Repeat: 1
Repeat: 0
AllowMultipleRepeatsPerTick: 0
- rid: 8805855836547055699
type: {class: PortModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
@@ -751,7 +848,7 @@ MonoBehaviour:
m_NodeModel:
rid: 8805855836547055698
m_Connections:
- rid: 8805855841097089468
- rid: 8805855941168464613
- rid: 8805855841097089283
type: {class: 'TypedVariableModel`1[[UnityEngine.GameObject, UnityEngine.CoreModule]]', ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
data:
@@ -1083,7 +1180,7 @@ MonoBehaviour:
m_NodeModel:
rid: 8805855841097089467
m_Connections:
- rid: 8805855836547055699
- rid: 8805855941168464154
- rid: 8805855841097089469
type: {class: PortModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
data:
@@ -1794,6 +1891,254 @@ MonoBehaviour:
IsExposed: 1
m_IsShared: 0
m_Value: {fileID: 11400000, guid: b7f09e0e899c8fc4bb2cc9204cc6eb4a, type: 2}
- rid: 8805855941168464148
type: {class: FloatingPortNodeModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
data:
Position: {x: 15.813689, y: -35.53409}
ID:
m_Value0: 7940545116008444959
m_Value1: 7530289849580528934
Parents: []
PortModels:
- rid: 8805855941168464151
- rid: 8805855941168464152
ParentNodeID:
m_Value0: 3882872508468950798
m_Value1: 3938133446346283639
PortName: True
- rid: 8805855941168464149
type: {class: FloatingPortNodeModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
data:
Position: {x: 431.27527, y: -39.538033}
ID:
m_Value0: 17027785473523230719
m_Value1: 11573909034072681315
Parents: []
PortModels:
- rid: 8805855941168464153
- rid: 8805855941168464154
ParentNodeID:
m_Value0: 3882872508468950798
m_Value1: 3938133446346283639
PortName: False
- rid: 8805855941168464150
type: {class: BranchingConditionNodeModel, ns: Unity.Behavior, asm: Unity.Behavior.Authoring}
data:
Position: {x: 211.1149, y: -155.69766}
ID:
m_Value0: 3882872508468950798
m_Value1: 3938133446346283639
Parents: []
PortModels:
- rid: 8805855941168464155
- rid: 8805855941168464156
- rid: 8805855941168464157
NodeType:
m_SerializableType: Unity.Behavior.BranchingConditionComposite, Unity.Behavior,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
NodeTypeID:
m_Value0: 12334964803190848789
m_Value1: 14608808926743427008
m_FieldValues: []
<ConditionModels>k__BackingField:
- ConditionType:
m_SerializableType: Unity.Behavior.VariableComparisonCondition, Unity.Behavior,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
ConditionTypeID:
m_Value0: 4706153636540939941
m_Value1: 1154942553909992356
NodeModel:
rid: 8805855941168464150
m_FieldValues:
- rid: 8805855941168464174
- rid: 8805855941168464175
- rid: 8805855941168464203
OperatorFieldModel:
rid: 8805855941168464175
<RequiresAllConditionsTrue>k__BackingField: 0
<ShouldTruncateNodeUI>k__BackingField: 0
<ObserverType>k__BackingField: 0
- rid: 8805855941168464151
type: {class: PortModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
data:
m_Name: InputPort
m_PortDataFlowType: 0
m_IsFloating: 1
m_NodeModel:
rid: 8805855941168464148
m_Connections:
- rid: 8805855941168464156
- rid: 8805855941168464152
type: {class: PortModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
data:
m_Name: OutputPort
m_PortDataFlowType: 1
m_IsFloating: 0
m_NodeModel:
rid: 8805855941168464148
m_Connections: []
- rid: 8805855941168464153
type: {class: PortModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
data:
m_Name: InputPort
m_PortDataFlowType: 0
m_IsFloating: 1
m_NodeModel:
rid: 8805855941168464149
m_Connections:
- rid: 8805855941168464157
- rid: 8805855941168464154
type: {class: PortModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
data:
m_Name: OutputPort
m_PortDataFlowType: 1
m_IsFloating: 0
m_NodeModel:
rid: 8805855941168464149
m_Connections:
- rid: 8805855841097089468
- rid: 8805855941168464155
type: {class: PortModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
data:
m_Name: InputPort
m_PortDataFlowType: 0
m_IsFloating: 0
m_NodeModel:
rid: 8805855941168464150
m_Connections:
- rid: 8805855941168464614
- rid: 8805855941168464156
type: {class: PortModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
data:
m_Name: True
m_PortDataFlowType: 1
m_IsFloating: 1
m_NodeModel:
rid: 8805855941168464150
m_Connections:
- rid: 8805855941168464151
- rid: 8805855941168464157
type: {class: PortModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
data:
m_Name: False
m_PortDataFlowType: 1
m_IsFloating: 1
m_NodeModel:
rid: 8805855941168464150
m_Connections:
- rid: 8805855941168464153
- rid: 8805855941168464174
type: {class: BehaviorGraphNodeModel/FieldModel, ns: Unity.Behavior, asm: Unity.Behavior.Authoring}
data:
FieldName: Variable
Type:
m_SerializableType: System.Object, mscorlib, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
LocalValue:
rid: 8805855941168464204
LinkedVariable:
rid: 8805855941168464202
- rid: 8805855941168464175
type: {class: BehaviorGraphNodeModel/FieldModel, ns: Unity.Behavior, asm: Unity.Behavior.Authoring}
data:
FieldName: Operator
Type:
m_SerializableType: Unity.Behavior.ConditionOperator, Unity.Behavior, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
LocalValue:
rid: 8805855941168464178
LinkedVariable:
rid: -2
- rid: 8805855941168464178
type: {class: 'BlackboardVariable`1[[Unity.Behavior.ConditionOperator, Unity.Behavior]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 0
m_Value1: 0
Name:
m_Value: 0
- rid: 8805855941168464202
type: {class: 'TypedVariableModel`1[[System.Boolean, mscorlib]]', ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
data:
ID:
m_Value0: 2997173512430605425
m_Value1: 14990413519379198129
Name: Die
IsExposed: 1
m_IsShared: 0
m_Value: 0
- rid: 8805855941168464203
type: {class: BehaviorGraphNodeModel/FieldModel, ns: Unity.Behavior, asm: Unity.Behavior.Authoring}
data:
FieldName: ComparisonValue
Type:
m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
LocalValue:
rid: 8805855941168464205
LinkedVariable:
rid: -2
- rid: 8805855941168464204
type: {class: 'BlackboardVariable`1[[System.Boolean, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 0
m_Value1: 0
Name:
m_Value: 0
- rid: 8805855941168464205
type: {class: 'BlackboardVariable`1[[System.Boolean, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 0
m_Value1: 0
Name:
m_Value: 1
- rid: 8805855941168464612
type: {class: RepeatNodeModel, ns: Unity.Behavior, asm: Unity.Behavior.Authoring}
data:
Position: {x: 211.47302, y: -249.38625}
ID:
m_Value0: 16903089648015682040
m_Value1: 5621269674286214316
Parents: []
PortModels:
- rid: 8805855941168464613
- rid: 8805855941168464614
NodeType:
m_SerializableType: Unity.Behavior.RepeaterModifier, Unity.Behavior, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
NodeTypeID:
m_Value0: 3696095273264312494
m_Value1: 14191201703811421854
m_FieldValues: []
AllowMultipleRepeatsPerTick: 0
<ConditionModels>k__BackingField: []
<RequiresAllConditionsTrue>k__BackingField: 0
<ShouldTruncateNodeUI>k__BackingField: 0
m_RepeatMode: 0
<ObserverType>k__BackingField: 0
<ReturnFailureOnConditionFail>k__BackingField: 1
- rid: 8805855941168464613
type: {class: PortModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
data:
m_Name: InputPort
m_PortDataFlowType: 0
m_IsFloating: 0
m_NodeModel:
rid: 8805855941168464612
m_Connections:
- rid: 8805855836547055699
- rid: 8805855941168464614
type: {class: PortModel, ns: Unity.Behavior.GraphFramework, asm: Unity.Behavior.GraphFramework}
data:
m_Name: OutputPort
m_PortDataFlowType: 1
m_IsFloating: 0
m_NodeModel:
rid: 8805855941168464612
m_Connections:
- rid: 8805855941168464155
--- !u!114 &6694785542709420471
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -1806,7 +2151,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 5c02bb70996b49eba31d0c206e28da24, type: 3}
m_Name: Behavior Graph Blackboard
m_EditorClassIdentifier: Unity.Behavior::Unity.Behavior.RuntimeBlackboardAsset
VersionTimestamp: 639088753701246820
VersionTimestamp: 639092245458294623
AssetID:
m_Value0: 11861793134961942170
m_Value1: 6108181331610501546
@@ -1818,6 +2163,7 @@ MonoBehaviour:
- rid: 8805855836547056143
- rid: 8805855836547056345
- rid: 8805855841097090030
- rid: 8805855941168464124
m_SharedBlackboardVariableGuids: []
references:
version: 2
@@ -1870,3 +2216,11 @@ MonoBehaviour:
m_Value1: 3771131609012049390
Name: Default Attack Skill
m_Value: {fileID: 11400000, guid: 4f40629d4d334434285e8fdec3714536, type: 2}
- rid: 8805855941168464124
type: {class: 'BlackboardVariable`1[[System.Boolean, mscorlib]]', ns: Unity.Behavior, asm: Unity.Behavior}
data:
GUID:
m_Value0: 2997173512430605425
m_Value1: 14990413519379198129
Name: Die
m_Value: 0

View File

@@ -0,0 +1,245 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &100000
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 400000}
- component: {fileID: 9500000}
- component: {fileID: 11400000}
- component: {fileID: 11400001}
- component: {fileID: 19500000}
- component: {fileID: 11400002}
- component: {fileID: 13600000}
- component: {fileID: 11400003}
- component: {fileID: 11400004}
- component: {fileID: 11400005}
- component: {fileID: 11400006}
m_Layer: 0
m_Name: BossTemplate
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &400000
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
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!95 &9500000
Animator:
serializedVersion: 7
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 0}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
m_StabilizeFeet: 0
m_AnimatePhysics: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject
GlobalObjectIdHash: 0
InScenePlacedSourceGlobalObjectIdHash: 0
DeferredDespawnTick: 0
Ownership: 1
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 1
ActiveSceneSynchronization: 0
SceneMigrationSynchronization: 0
SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
SyncOwnerTransformWhenParented: 1
AllowOwnerToParent: 0
--- !u!114 &11400001
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4a49d1cf004a0c944be905fe6fabf936, type: 3}
m_Name:
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Enemy.BossEnemy
ShowTopMostFoldoutHeaderGroup: 1
characterStats: {fileID: 11400002}
animator: {fileID: 9500000}
navMeshAgent: {fileID: 19500000}
enemyData: {fileID: 0}
phases: []
initialBehaviorGraph: {fileID: 0}
phaseTransitionInvincibilityTime: 2
phaseTransitionDuration: 3
debugMode: 0
--- !u!195 &19500000
NavMeshAgent:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_AgentTypeID: 0
m_Radius: 0.5
m_Speed: 3.5
m_Acceleration: 8
avoidancePriority: 50
m_AngularSpeed: 120
m_StoppingDistance: 0
m_AutoTraverseOffMeshLink: 1
m_AutoBraking: 1
m_AutoRepath: 1
m_Height: 2
m_BaseOffset: 0
m_WalkableMask: 4294967295
m_ObstacleAvoidanceType: 4
--- !u!114 &11400002
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fae0149926eea244dad932b67ee76f7b, type: 3}
m_Name:
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Stats.CharacterStats
strength:
baseValue: 10
dexterity:
baseValue: 10
intelligence:
baseValue: 10
vitality:
baseValue: 10
wisdom:
baseValue: 10
spirit:
baseValue: 10
--- !u!136 &13600000
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
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.5
m_Height: 2
m_Direction: 1
m_Center: {x: 0, y: 1, z: 0}
--- !u!114 &11400003
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5443105bfa8e570438bb5dc62c58aca9, type: 3}
m_Name:
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Enemy.EnemyAnimationController
ShowTopMostFoldoutHeaderGroup: 1
speedParam: Speed
attackTriggerParam: Attack
skillTriggerParam: Skill
speedSmoothTime: 0.1
stopThreshold: 0.05
--- !u!114 &11400004
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59b4feaa06ce4c74f97ed5b57ddd74d1, type: 3}
m_Name:
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Skills.SkillController
animator: {fileID: 9500000}
baseController: {fileID: 0}
baseSkillClip: {fileID: 0}
debugMode: 0
showAreaDebug: 1
debugDrawDuration: 1
--- !u!114 &11400005
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d1f7d13276f272b428bddd4d9aa5b3d8, type: 3}
m_Name:
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Team
teamType: 2
--- !u!114 &11400006
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7a766b6ab825c1445a3385079bb32cc5, type: 3}
m_Name:
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Abnormalities.AbnormalityManager
ShowTopMostFoldoutHeaderGroup: 1
characterStats: {fileID: 0}
networkController: {fileID: 0}

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

@@ -0,0 +1,196 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-6988589790562594410
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
version: 10
--- !u!114 &-1092918317606464121
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 639247ca83abc874e893eb93af2b5e44, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.ShaderGraph.Editor::UnityEditor.Rendering.BuiltIn.AssetVersion
version: 0
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Human-Custom
m_Shader: {fileID: -6465566751694194690, guid: db628544640279b41a4a7aa5d75c0322, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 2
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses:
- MOTIONVECTORS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BloodMaskTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ColorMap:
m_Texture: {fileID: 2800000, guid: 927aba41a86039f47acd0f6e5fdc8923, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _CutsMaskTexture:
m_Texture: {fileID: 2800000, guid: 75ccb45ed310e81409b3f9d13dce709d, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DarkMaskTexture:
m_Texture: {fileID: 2800000, guid: 08475d8495d3e8c45b04efee61a5f57e, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DecalMap:
m_Texture: {fileID: 2800000, guid: 9b81938a0fb0eed49998fe071f3542ce, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DirtMaskTexture:
m_Texture: {fileID: 2800000, guid: e7c56d4419b4d144ca3f5af3ee0c81cb, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 2800000, guid: 9b81938a0fb0eed49998fe071f3542ce, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EyeEdgeMaskTexture:
m_Texture: {fileID: 2800000, guid: 9f2a0abb1a72f0c449829a589d13d7f0, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 8476071d75ce7644e92ce96aff0e7e45, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicMap:
m_Texture: {fileID: 2800000, guid: 9355e2c6fbbf433459fd984f6ab2710d, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OpacityMap:
m_Texture: {fileID: 2800000, guid: 9bd3c57211d1dc349b85770ba5143ba2, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ReflectionMap:
m_Texture: {fileID: 2800000, guid: b1b7b6d2944530e4289fb60e3e8bb392, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SkinMaskTexture:
m_Texture: {fileID: 2800000, guid: 7fa654420cbe02f4090af7728ca0115b, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SmoothnessMap:
m_Texture: {fileID: 2800000, guid: a9afe302bb810e741a33702651691a01, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _texcoord:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_Lightmaps:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_LightmapsInd:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_ShadowMasks:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaCutoff: 0.5
- _BUILTIN_QueueControl: 0
- _BUILTIN_QueueOffset: 0
- _BloodAmount: 0.5
- _BumpScale: 1
- _Cutoff: 0.5
- _CutsAmount: 0
- _DarkAmount: 0.5
- _DetailNormalMapScale: 1
- _DirtAmount: 0.081
- _DstBlend: 0
- _EnvironmentReflections: 1
- _EyelinerAmount: 0
- _FeminieAmount: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _QueueControl: 0
- _QueueOffset: 0
- _ReceiveShadows: 1
- _SkinColorAmount: 0
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
- __dirty: 0
m_Colors:
- _BloodColor: {r: 0.43396226, g: 0.14737415, b: 0.14192465, a: 0}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _CutsColor: {r: 0.33333328, g: 0.33333328, b: 0.33333328, a: 0}
- _DarkColor: {r: 0, g: 0, b: 0, a: 0}
- _DirtColor: {r: 0.4716981, g: 0.35202244, b: 0.23881568, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _Grey: {r: 0.59748423, g: 0.59748423, b: 0.59748423, a: 0}
- _SkinColor: {r: 0, g: 0, b: 0, a: 0}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 69b7cf69836c34649bf0c881c5c5c3a7
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

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

File diff suppressed because it is too large Load Diff

View File

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

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 62bf78b2835e795498a237fcab75d47f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 4300000
userData:
assetBundleName:
assetBundleVariant:

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 758 B

View File

@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: 927aba41a86039f47acd0f6e5fdc8923
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
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: 0
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
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: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 32
resizeAlgorithm: 1
textureFormat: 3
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
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: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,96 +1,5 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &211504524078169162
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 425108118890909732}
- component: {fileID: 641669166220653710}
m_Layer: 0
m_Name: Prop_R
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &425108118890909732
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 211504524078169162}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 5, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 876336192716036432}
m_Father: {fileID: 7709863043280880487}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &641669166220653710
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 211504524078169162}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 04570063543744548b5cc95cea8bbff6, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Synty.Tools.SyntyPropBoneTool.PropBone
_wasSpawnedBySyntyTool: 1
--- !u!1 &5510832058398597268
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 876336192716036432}
- component: {fileID: 5875348249504489215}
m_Layer: 0
m_Name: Prop_R_Socket
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &876336192716036432
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5510832058398597268}
serializedVersion: 2
m_LocalRotation: {x: 0.000000048428777, y: -0.000000026077034, z: 0.70619637, w: -0.70801604}
m_LocalPosition: {x: -4.9871373, y: -4.999995, z: 0.000009025123}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 425108118890909732}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &5875348249504489215
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5510832058398597268}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 04570063543744548b5cc95cea8bbff6, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Synty.Tools.SyntyPropBoneTool.PropBone
_wasSpawnedBySyntyTool: 1
--- !u!1 &6473031571298860035
GameObject:
m_ObjectHideFlags: 0
@@ -135,7 +44,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 7701595578038390519}
- {fileID: 786837278690046811}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!143 &8278636880930099738
@@ -198,7 +107,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject
GlobalObjectIdHash: 291279334
GlobalObjectIdHash: 652883547
InScenePlacedSourceGlobalObjectIdHash: 0
DeferredDespawnTick: 0
Ownership: 1
@@ -325,6 +234,10 @@ MonoBehaviour:
NameHash: 137525990
Synchronize: 1
ParameterType: 9
- name: Die
NameHash: 20298039
Synchronize: 1
ParameterType: 9
AnimatorParametersExpanded: 0
--- !u!95 &3426985706796420257
Animator:
@@ -335,7 +248,7 @@ Animator:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6473031571298860035}
m_Enabled: 1
m_Avatar: {fileID: 9000000, guid: 038320a534bd8b444b43734860d1a211, type: 3}
m_Avatar: {fileID: 9000000, guid: d929f787137059c459b9b4d2bd40da61, type: 2}
m_Controller: {fileID: 9100000, guid: db718381bb2992e469c76c64015e065b, type: 2}
m_CullingMode: 0
m_UpdateMode: 0
@@ -343,10 +256,7 @@ Animator:
m_LinearVelocityBlending: 0
m_StabilizeFeet: 0
m_AnimatePhysics: 0
m_WarningMessage: "\nBinding warning: Some generic clip(s) animate transforms that
are already bound by a Humanoid avatar. These transforms can only be changed
by Humanoid clips.\n\tTransform 'Toes_R'\n\tTransform 'Toes_R'\n\tFrom animation
clip 'A_Idle_Base_Sword'\n\tFrom animation clip 'A_Attack_LightCombo01A_Sword'"
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0
@@ -457,7 +367,7 @@ MonoBehaviour:
intelligence:
baseValue: 10
vitality:
baseValue: 5
baseValue: 500
wisdom:
baseValue: 100
spirit:
@@ -476,13 +386,13 @@ MonoBehaviour:
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Weapons.WeaponEquipment
ShowTopMostFoldoutHeaderGroup: 1
characterStats: {fileID: -5132198055668300151}
rightHandName: Prop_R_Socket
rightHandName: prop_r
leftHandName: Hand_L
backName: Spine
hipName: Hip
twoHandedName:
startingWeapon: {fileID: 11400000, guid: 646964ccbda84e947b97537d7f7813aa, type: 2}
--- !u!1001 &7705728874586931617
--- !u!1001 &361239394574523229
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
@@ -490,107 +400,86 @@ PrefabInstance:
serializedVersion: 3
m_TransformParent: {fileID: 4340744812167131579}
m_Modifications:
- target: {fileID: 1121787054825102, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1265346787747520, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
propertyPath: m_Name
value: Chr_FantasyHero_Preset_14
objectReference: {fileID: 0}
- target: {fileID: 4978357419315030, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
- target: {fileID: 1146176029965363206, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4978357419315030, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
- target: {fileID: 1146176029965363206, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4978357419315030, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
- target: {fileID: 1146176029965363206, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4978357419315030, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
- target: {fileID: 1146176029965363206, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4978357419315030, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
- target: {fileID: 1146176029965363206, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_LocalRotation.x
value: -0
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4978357419315030, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
- target: {fileID: 1146176029965363206, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_LocalRotation.y
value: -0
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4978357419315030, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
- target: {fileID: 1146176029965363206, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_LocalRotation.z
value: -0
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4978357419315030, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
- target: {fileID: 1146176029965363206, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4978357419315030, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
- target: {fileID: 1146176029965363206, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4978357419315030, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
- target: {fileID: 1146176029965363206, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 933129746491078306, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
propertyPath: m_LocalPosition.x
value: -6.583011
- target: {fileID: 2686076106378794738, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_Name
value: Human-Custom
objectReference: {fileID: 0}
- target: {fileID: 933129746491078306, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
propertyPath: m_LocalPosition.y
value: -6.5999885
- target: {fileID: 6512590306137610667, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_LocalRotation.w
value: 0.5015509
objectReference: {fileID: 0}
- target: {fileID: 933129746491078306, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
propertyPath: m_LocalPosition.z
value: 0.00000084909516
- target: {fileID: 6512590306137610667, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_LocalRotation.x
value: -0.51583874
objectReference: {fileID: 0}
- target: {fileID: 4083275338838575672, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
propertyPath: m_LocalPosition.x
value: 6.6
- target: {fileID: 6512590306137610667, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_LocalRotation.y
value: -0.49844423
objectReference: {fileID: 0}
- target: {fileID: 4083275338838575672, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
propertyPath: m_LocalPosition.y
value: -0
- target: {fileID: 6512590306137610667, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_LocalRotation.z
value: 0.48364282
objectReference: {fileID: 0}
- target: {fileID: 4083275338838575672, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
propertyPath: m_LocalPosition.z
value: 0
- target: {fileID: 6512590306137610667, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: -177.977
objectReference: {fileID: 0}
- target: {fileID: 6512590306137610667, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 88.333
objectReference: {fileID: 0}
- target: {fileID: 6512590306137610667, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: -90
objectReference: {fileID: 0}
- target: {fileID: 6854449968133871964, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
propertyPath: propBoneConfig
value:
objectReference: {fileID: 11400000, guid: 711015ea15f411b4292b25e68fe06e2d, type: 2}
- target: {fileID: 6854449968133871964, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
propertyPath: _propBoneBindings.Array.data[0].bone
value:
objectReference: {fileID: 425108118890909732}
- target: {fileID: 6854449968133871964, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
propertyPath: _propBoneBindings.Array.data[0].socket
value:
objectReference: {fileID: 876336192716036432}
m_RemovedComponents:
- {fileID: -5600325556184611898, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
m_RemovedGameObjects:
- {fileID: 5663282852335883768, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
m_AddedGameObjects:
- targetCorrespondingSourceObject: {fileID: 4169362731877062, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
insertIndex: -1
addedObject: {fileID: 425108118890909732}
- {fileID: 6894328532986472068, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
--- !u!4 &7701595578038390519 stripped
m_SourcePrefab: {fileID: 100100000, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
--- !u!4 &786837278690046811 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4978357419315030, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
m_PrefabInstance: {fileID: 7705728874586931617}
m_PrefabAsset: {fileID: 0}
--- !u!4 &7709863043280880487 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4169362731877062, guid: 0b61a3665c5cd5142bf27be7c52500cf, type: 3}
m_PrefabInstance: {fileID: 7705728874586931617}
m_CorrespondingSourceObject: {fileID: 1146176029965363206, guid: ddb893375f0dbd64ea2274bcde4672af, type: 3}
m_PrefabInstance: {fileID: 361239394574523229}
m_PrefabAsset: {fileID: 0}

View File

@@ -1851,6 +1851,83 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1433547822
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1433547825}
- component: {fileID: 1433547823}
- component: {fileID: 1433547824}
m_Layer: 0
m_Name: GameManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1433547823
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1433547822}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject
GlobalObjectIdHash: 2791975254
InScenePlacedSourceGlobalObjectIdHash: 0
DeferredDespawnTick: 0
Ownership: 1
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 1
ActiveSceneSynchronization: 0
SceneMigrationSynchronization: 0
SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
SyncOwnerTransformWhenParented: 1
AllowOwnerToParent: 0
--- !u!114 &1433547824
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1433547822}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7bde02fc6ca2ab0468bb3ce777206089, type: 3}
m_Name:
m_EditorClassIdentifier: Colosseum.Game::Colosseum.GameManager
ShowTopMostFoldoutHeaderGroup: 1
gameOverUIPrefab: {fileID: 1938792592198155266, guid: e065144df1b7fcc479fd319fb571e171, type: 3}
victoryUIPrefab: {fileID: 1938792592198155266, guid: e065144df1b7fcc479fd319fb571e171, type: 3}
victoryEffectPrefab: {fileID: 0}
gameOverRestartDelay: 5
victoryToLobbyDelay: 5
debugMode: 1
--- !u!4 &1433547825
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1433547822}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.70615, y: 0.005, z: 11.36636}
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!114 &1716412285 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 8269532055776948113, guid: d8795051068c4f84e84c227a6618e587, type: 3}
@@ -2141,7 +2218,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3122493901255878198, guid: 56986b707b0dc09439cb35ff2f87dcc9, type: 3}
propertyPath: m_LocalRotation.w
value: 1
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3122493901255878198, guid: 56986b707b0dc09439cb35ff2f87dcc9, type: 3}
propertyPath: m_LocalRotation.x
@@ -2149,7 +2226,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3122493901255878198, guid: 56986b707b0dc09439cb35ff2f87dcc9, type: 3}
propertyPath: m_LocalRotation.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3122493901255878198, guid: 56986b707b0dc09439cb35ff2f87dcc9, type: 3}
propertyPath: m_LocalRotation.z
@@ -2161,7 +2238,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3122493901255878198, guid: 56986b707b0dc09439cb35ff2f87dcc9, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
value: 180
objectReference: {fileID: 0}
- target: {fileID: 3122493901255878198, guid: 56986b707b0dc09439cb35ff2f87dcc9, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
@@ -2331,3 +2408,4 @@ SceneRoots:
- {fileID: 260528176}
- {fileID: 1990079618}
- {fileID: 1324642684}
- {fileID: 1433547825}

View File

@@ -3,6 +3,7 @@ using Unity.Behavior;
using UnityEngine;
using Action = Unity.Behavior.Action;
using Unity.Properties;
using Colosseum.Combat;
[Serializable, GeneratePropertyBag]
[NodeDescription(name: "FindTarget", story: "[타겟] ", category: "Action", id: "bb947540549026f3c5625c6d19213311")]
@@ -21,15 +22,29 @@ public partial class FindTargetAction : Action
return Status.Failure;
}
GameObject foundTarget = GameObject.FindGameObjectWithTag(Tag.Value);
// 모든 타겟 후보 검색
GameObject[] candidates = GameObject.FindGameObjectsWithTag(Tag.Value);
if (foundTarget == null)
if (candidates == null || candidates.Length == 0)
{
return Status.Failure;
}
Target.Value = foundTarget;
return Status.Success;
// 사망하지 않은 타겟 찾기
foreach (GameObject candidate in candidates)
{
IDamageable damageable = candidate.GetComponent<IDamageable>();
// IDamageable이 없거나 살아있는 경우 타겟으로 선택
if (damageable == null || !damageable.IsDead)
{
Target.Value = candidate;
return Status.Success;
}
}
// 살아있는 타겟이 없음
return Status.Failure;
}
}

View File

@@ -0,0 +1,22 @@
using System;
using Unity.Behavior;
using UnityEngine;
[Serializable, Unity.Properties.GeneratePropertyBag]
[Condition(name: "isDie", story: "죽었는지 확인", category: "Conditions", id: "8067176f9f490e7d974824f8087de448")]
public partial class IsDieCondition : Condition
{
public override bool IsTrue()
{
return true;
}
public override void OnStart()
{
}
public override void OnEnd()
{
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 3d2c81704b2be4c4289bcf5555059b87

View File

@@ -3,6 +3,7 @@ using Unity.Behavior;
using UnityEngine;
using Action = Unity.Behavior.Action;
using Unity.Properties;
using Colosseum.Combat;
[Serializable, GeneratePropertyBag]
[NodeDescription(name: "SetTargetInRange", story: "[거리] [] ", category: "Action", id: "93b7a5d823a58618d5371c01ef894948")]
@@ -32,12 +33,19 @@ public partial class SetTargetInRangeAction : Action
return Status.Failure;
}
// 가장 가까운 타겟 찾기
// 가장 가까운 살아있는 타겟 찾기
GameObject nearestTarget = null;
float nearestDistance = Range.Value; // Range 내에서만 검색
foreach (GameObject potentialTarget in targets)
{
// 사망한 타겟은 제외
IDamageable damageable = potentialTarget.GetComponent<IDamageable>();
if (damageable != null && damageable.IsDead)
{
continue;
}
float distance = Vector3.Distance(
GameObject.transform.position,
potentialTarget.transform.position

View File

@@ -3,11 +3,12 @@ using UnityEngine;
using Unity.Behavior;
using Unity.Properties;
using Condition = Unity.Behavior.Condition;
using Colosseum.Combat;
namespace Colosseum.AI.BehaviorActions.Conditions
{
/// <summary>
/// 타겟이 존재하는지 확인합니다.
/// 타겟이 존재하고 살아있는지 확인합니다.
/// </summary>
[Serializable, GeneratePropertyBag]
[NodeDescription(name: "Has Target", story: "Has [Target]", category: "Combat")]
@@ -18,7 +19,19 @@ namespace Colosseum.AI.BehaviorActions.Conditions
public override bool IsTrue()
{
return Target.Value != null && Target.Value.activeInHierarchy;
if (Target.Value == null || !Target.Value.activeInHierarchy)
{
return false;
}
// 타겟이 사망했는지 확인
IDamageable damageable = Target.Value.GetComponent<IDamageable>();
if (damageable != null && damageable.IsDead)
{
return false;
}
return true;
}
}
}

View File

@@ -7,7 +7,8 @@
"Unity.Transport",
"Unity.InputSystem",
"Unity.TextMeshPro",
"Unity.Behavior"
"Unity.Behavior",
"Unity.Behavior.SerializableGUID"
],
"includePlatforms": [],
"excludePlatforms": [],

View File

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

View File

@@ -0,0 +1,187 @@
using System.Collections;
using UnityEngine;
using Colosseum.Enemy;
namespace Colosseum.Effects
{
/// <summary>
/// 보스 승리 연출 이펙트.
/// 보스 사망 시 카메라 연출, 이펙트, 슬로우 모션 등을 처리합니다.
/// GameManager에 의해 활성화됩니다.
/// </summary>
public class VictoryEffect : MonoBehaviour
{
[Header("Victory Settings")]
[Tooltip("승리 시 슬로우 모션 배율")]
[SerializeField] private float slowMotionScale = 0.3f;
[Tooltip("슬로우 모션 지속 시간")]
[SerializeField] private float slowMotionDuration = 2f;
[Header("Effects")]
[Tooltip("승리 시 생성할 이펙트 프리팹")]
[SerializeField] private GameObject victoryEffectPrefab;
[Tooltip("이펙트 생성 위치 오프셋")]
[SerializeField] private Vector3 effectOffset = Vector3.up * 2f;
[Header("Audio")]
[Tooltip("승리 사운드")]
[SerializeField] private AudioClip victorySound;
[Tooltip("사운드 볼륨")]
[SerializeField] private float soundVolume = 1f;
[Header("Debug")]
[SerializeField] private bool debugMode = true;
// 상태
private bool isPlaying = false;
private float originalTimeScale;
private Camera mainCamera;
private void Awake()
{
mainCamera = Camera.main;
}
private void OnEnable()
{
PlayVictoryEffect();
}
private void OnDisable()
{
// 시간 스케일 복구
if (isPlaying)
{
Time.timeScale = 1f;
isPlaying = false;
}
}
/// <summary>
/// 승리 연출 재생
/// </summary>
public void PlayVictoryEffect()
{
if (isPlaying) return;
StartCoroutine(VictorySequence());
}
private IEnumerator VictorySequence()
{
isPlaying = true;
originalTimeScale = Time.timeScale;
if (debugMode)
{
Debug.Log("[VictoryEffect] Starting victory sequence");
}
// 1. 슬로우 모션
yield return StartCoroutine(PlaySlowMotion());
// 2. 카메라 연출
yield return StartCoroutine(PlayCameraEffect());
// 3. 이펙트 생성
SpawnVictoryEffect();
// 4. 사운드 재생
PlayVictorySound();
// 5. 시간 복구
Time.timeScale = originalTimeScale;
isPlaying = false;
if (debugMode)
{
Debug.Log("[VictoryEffect] Victory sequence complete");
}
}
private IEnumerator PlaySlowMotion()
{
float elapsed = 0f;
while (elapsed < slowMotionDuration)
{
elapsed += Time.unscaledDeltaTime;
float t = elapsed / slowMotionDuration;
// 처음에는 슬로우, 나중에는 복구
if (t < 0.5f)
{
Time.timeScale = Mathf.Lerp(originalTimeScale, slowMotionScale, t * 2f);
}
else
{
Time.timeScale = Mathf.Lerp(slowMotionScale, originalTimeScale, (t - 0.5f) * 2f);
}
yield return null;
}
Time.timeScale = slowMotionScale;
}
private IEnumerator PlayCameraEffect()
{
if (mainCamera == null || BossEnemy.ActiveBoss == null)
yield break;
// 보스 위치로 카메라 이동
Transform bossTransform = BossEnemy.ActiveBoss.transform;
Vector3 targetPosition = bossTransform.position + effectOffset;
float elapsed = 0f;
float duration = slowMotionDuration * 0.5f;
while (elapsed < duration)
{
elapsed += Time.unscaledDeltaTime;
// 카메라가 보스를 바라보도록
mainCamera.transform.LookAt(targetPosition);
yield return null;
}
}
private void SpawnVictoryEffect()
{
if (victoryEffectPrefab == null) return;
Vector3 spawnPosition = transform.position + effectOffset;
if (BossEnemy.ActiveBoss != null)
{
spawnPosition = BossEnemy.ActiveBoss.transform.position + effectOffset;
}
var effect = Instantiate(victoryEffectPrefab, spawnPosition, Quaternion.identity);
// 일정 시간 후 제거
Destroy(effect, 5f);
if (debugMode)
{
Debug.Log("[VictoryEffect] Spawned victory effect");
}
}
private void PlayVictorySound()
{
if (victorySound == null) return;
AudioSource.PlayClipAtPoint(victorySound, transform.position, soundVolume);
if (debugMode)
{
Debug.Log("[VictoryEffect] Played victory sound");
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: b7cbb78d0cea7014ba69a25271583954

View File

@@ -73,7 +73,7 @@ namespace Colosseum.Enemy
// BossHealthBarUI 자동 검색
if (bossHealthBarUI == null)
{
bossHealthBarUI = FindObjectOfType<BossHealthBarUI>();
bossHealthBarUI = FindFirstObjectByType<BossHealthBarUI>();
if (bossHealthBarUI == null)
{
Debug.LogWarning($"[BossArea] {name}: BossHealthBarUI를 찾을 수 없습니다.");

View File

@@ -11,6 +11,7 @@ namespace Colosseum.Enemy
/// 보스 캐릭터. 페이즈 시스템과 동적 AI 전환을 지원합니다.
/// Unity Behavior 패키지를 사용하여 Behavior Tree 기반 AI를 구현합니다.
/// </summary>
public class BossEnemy : EnemyBase
{
[Header("Boss Settings")]
@@ -274,13 +275,16 @@ namespace Colosseum.Enemy
return;
}
base.HandleDeath();
// AI 정지
// AI 완전 중단 (순서 중요: enabled=false를 먼저 호출하여 Update() 차단)
if (behaviorAgent != null)
{
behaviorAgent.enabled = false; // 가장 먼저: Update() 호출 방지
behaviorAgent.End();
behaviorAgent.Graph = null;
}
behaviorAgent = null;
base.HandleDeath();
}
#region Debug

View File

@@ -20,6 +20,7 @@ namespace Colosseum.Enemy
private Animator animator;
private UnityEngine.AI.NavMeshAgent navMeshAgent;
private EnemyBase enemyBase;
private float currentSpeed;
private float speedVelocity;
@@ -27,6 +28,7 @@ namespace Colosseum.Enemy
{
animator = GetComponent<Animator>();
navMeshAgent = GetComponent<UnityEngine.AI.NavMeshAgent>();
enemyBase = GetComponent<EnemyBase>();
}
public override void OnNetworkSpawn()
@@ -49,6 +51,10 @@ namespace Colosseum.Enemy
/// </summary>
private void UpdateAnimationParameters()
{
// 사망 상태에서는 애니메이션 파라미터 업데이트 중단
if (enemyBase != null && enemyBase.IsDead)
return;
if (animator == null || navMeshAgent == null)
return;
@@ -71,20 +77,29 @@ namespace Colosseum.Enemy
/// </summary>
public void PlayAttack()
{
if (IsServer && animator != null)
{
animator.SetTrigger(attackTriggerParam);
}
if (!IsServer || animator == null)
return;
// 사망 상태에서는 공격 애니메이션 재생하지 않음
if (enemyBase != null && enemyBase.IsDead)
return;
animator.SetTrigger(attackTriggerParam);
}
/// <summary>
/// 스킬 애니메이션 트리거 (외부에서 호출)
/// </summary>
public void PlaySkill()
{
if (IsServer && animator != null)
{
animator.SetTrigger(skillTriggerParam);
}
if (!IsServer || animator == null)
return;
// 사망 상태에서는 스킬 애니메이션 재생하지 않음
if (enemyBase != null && enemyBase.IsDead)
return;
animator.SetTrigger(skillTriggerParam);
}
/// <summary>
@@ -93,10 +108,14 @@ namespace Colosseum.Enemy
/// <param name="triggerName">트리거 파라미터 이름</param>
public void PlayTrigger(string triggerName)
{
if (IsServer && animator != null)
{
animator.SetTrigger(triggerName);
}
if (!IsServer || animator == null)
return;
// 사망 상태에서는 일반 애니메이션 재생하지 않음
if (enemyBase != null && enemyBase.IsDead)
return;
animator.SetTrigger(triggerName);
}
/// <summary>

View File

@@ -23,6 +23,8 @@ namespace Colosseum.Enemy
[Header("Data")]
[SerializeField] protected EnemyData enemyData;
// 네트워크 동기화 변수
protected NetworkVariable<float> currentHealth = new NetworkVariable<float>(100f);
protected NetworkVariable<float> currentMana = new NetworkVariable<float>(50f);
@@ -90,16 +92,6 @@ namespace Colosseum.Enemy
isDead.Value = false;
}
/// <summary>
/// 대미지 적용 (서버에서 실행)
/// </summary>
@@ -150,6 +142,34 @@ namespace Colosseum.Enemy
return actualHeal;
}
/// <summary>
/// 사망 애니메이션 재생 (모든 클라이언트에서 실행)
/// </summary>
[Rpc(SendTo.Everyone)]
private void PlayDeathAnimationRpc()
{
if (animator != null)
{
// EnemyAnimationController 비활성화 (더 이상 애니메이션 제어하지 않음)
var animController = GetComponent<EnemyAnimationController>();
if (animController != null)
{
animController.enabled = false;
}
// 모든 트리거 리셋
animator.ResetTrigger("Attack");
animator.ResetTrigger("Skill");
animator.ResetTrigger("Hit");
animator.ResetTrigger("Jump");
animator.ResetTrigger("Land");
animator.ResetTrigger("Die");
// 즉시 Die 상태로 전환 (다른 애니메이션 중단)
animator.Play("Die", 0, 0f);
}
}
/// <summary>
/// 사망 처리 (서버에서 실행)
/// </summary>
@@ -157,11 +177,16 @@ namespace Colosseum.Enemy
{
isDead.Value = true;
if (animator != null)
// 실행 중인 스킬 즉시 취소
var skillController = GetComponent<Colosseum.Skills.SkillController>();
if (skillController != null)
{
animator.SetTrigger("Die");
skillController.CancelSkill();
}
// 모든 클라이언트에서 사망 애니메이션 재생
PlayDeathAnimationRpc();
if (navMeshAgent != null)
{
navMeshAgent.isStopped = true;

View File

@@ -0,0 +1,515 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.SceneManagement;
using Unity.Netcode;
using Colosseum.Player;
using Colosseum.Enemy;
namespace Colosseum
{
/// <summary>
/// 게임 상태 열거형
/// </summary>
public enum GameState
{
Waiting, // 대기 중
Playing, // 게임 진행 중
GameOver, // 게임 오버
Victory // 승리
}
/// <summary>
/// 게임 전체를 관리하는 매니저.
/// 게임 상태, 플레이어 사망 체크, 승리/패배 조건을 처리합니다.
/// </summary>
public class GameManager : NetworkBehaviour
{
[Header("UI Prefabs")]
[Tooltip("게임 오버 UI 프리팹")]
[SerializeField] private GameObject gameOverUIPrefab;
[Tooltip("승리 UI 프리팹")]
[SerializeField] private GameObject victoryUIPrefab;
[Tooltip("승리 연출 이펙트 프리팹")]
[SerializeField] private GameObject victoryEffectPrefab;
[Header("Settings")]
[Tooltip("게임 오버 후 재시작까지 대기 시간")]
[SerializeField] private float gameOverRestartDelay = 5f;
[Tooltip("승리 후 로비로 이동까지 대기 시간")]
[SerializeField] private float victoryToLobbyDelay = 5f;
[Header("Debug")]
[SerializeField] private bool debugMode = true;
// 싱글톤
public static GameManager Instance { get; private set; }
// 게임 상태
private NetworkVariable<GameState> currentState = new NetworkVariable<GameState>(GameState.Waiting);
// 인스턴스화된 UI
private GameObject gameOverUIInstance;
private GameObject victoryUIInstance;
private GameObject victoryEffectInstance;
// 이벤트
public event Action<GameState> OnGameStateChanged;
public event Action OnGameOver;
public event Action OnVictory;
// Properties
public GameState CurrentState => currentState.Value;
public bool IsGameOver => currentState.Value == GameState.GameOver;
public bool IsVictory => currentState.Value == GameState.Victory;
private void Awake()
{
// 싱글톤 설정
if (Instance != null && Instance != this)
{
Destroy(gameObject);
return;
}
Instance = this;
}
public override void OnNetworkSpawn()
{
currentState.OnValueChanged += HandleGameStateChanged;
// 네트워크 씬 로드 이벤트 구독
if (NetworkManager.Singleton.SceneManager != null)
{
NetworkManager.Singleton.SceneManager.OnLoadEventCompleted += OnSceneLoadCompleted;
}
// UI 인스턴스화 (모든 클라이언트에서)
SpawnUI();
if (IsServer)
{
// 플레이어 사망 이벤트 구독
StartCoroutine(WaitForPlayersAndSubscribe());
// 보스 사망 이벤트 구독
SubscribeToBossEvents();
}
}
private void OnSceneLoadCompleted(string sceneName, LoadSceneMode loadSceneMode, List<ulong> clientsCompleted, List<ulong> clientsTimedOut)
{
if (loadSceneMode == LoadSceneMode.Single)
{
if (debugMode)
{
Debug.Log($"[GameManager] Scene loaded: {sceneName}");
}
// 씬 로드 완료 시 플레이어 리스폰
if (IsServer)
{
RespawnAllPlayersClientRpc();
}
}
}
[Rpc(SendTo.ClientsAndHost)]
private void RespawnAllPlayersClientRpc()
{
// 모든 플레이어 리스폰
var players = FindObjectsByType<PlayerNetworkController>(FindObjectsSortMode.None);
foreach (var player in players)
{
player.Respawn();
}
// 카메라 재설정
var playerMovement = FindObjectsByType<PlayerMovement>(FindObjectsSortMode.None);
foreach (var movement in playerMovement)
{
movement.RefreshCamera();
}
}
public override void OnNetworkDespawn()
{
currentState.OnValueChanged -= HandleGameStateChanged;
// 네트워크 씬 로드 이벤트 구독 해제
if (NetworkManager.Singleton.SceneManager != null)
{
NetworkManager.Singleton.SceneManager.OnLoadEventCompleted -= OnSceneLoadCompleted;
}
// UI 정리
CleanupUI();
if (IsServer)
{
UnsubscribeFromPlayerEvents();
UnsubscribeFromBossEvents();
}
}
#region UI Management
/// <summary>
/// UI 프리팹 인스턴스화
/// </summary>
private void SpawnUI()
{
// Canvas 찾기 또는 생성
Canvas canvas = FindOrCreateCanvas();
// 게임 오버 UI
if (gameOverUIPrefab != null)
{
gameOverUIInstance = Instantiate(gameOverUIPrefab, canvas.transform);
gameOverUIInstance.name = "GameOverUI";
gameOverUIInstance.SetActive(false);
if (debugMode)
{
Debug.Log("[GameManager] GameOverUI instantiated");
}
}
// 승리 UI
if (victoryUIPrefab != null)
{
victoryUIInstance = Instantiate(victoryUIPrefab, canvas.transform);
victoryUIInstance.name = "VictoryUI";
victoryUIInstance.SetActive(false);
if (debugMode)
{
Debug.Log("[GameManager] VictoryUI instantiated");
}
}
// 승리 연출 이펙트
if (victoryEffectPrefab != null)
{
victoryEffectInstance = Instantiate(victoryEffectPrefab);
victoryEffectInstance.name = "VictoryEffect";
victoryEffectInstance.SetActive(false);
if (debugMode)
{
Debug.Log("[GameManager] VictoryEffect instantiated");
}
}
}
/// <summary>
/// Canvas 찾기 또는 생성
/// </summary>
private Canvas FindOrCreateCanvas()
{
// 기존 Canvas 찾기
Canvas canvas = FindFirstObjectByType<Canvas>();
if (canvas == null)
{
// 새 Canvas 생성
var canvasObject = new GameObject("GameUI Canvas");
canvas = canvasObject.AddComponent<Canvas>();
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
canvasObject.AddComponent<UnityEngine.UI.CanvasScaler>();
canvasObject.AddComponent<UnityEngine.UI.GraphicRaycaster>();
if (debugMode)
{
Debug.Log("[GameManager] Created new Canvas");
}
}
return canvas;
}
/// <summary>
/// UI 정리
/// </summary>
private void CleanupUI()
{
if (gameOverUIInstance != null)
{
Destroy(gameOverUIInstance);
}
if (victoryUIInstance != null)
{
Destroy(victoryUIInstance);
}
if (victoryEffectInstance != null)
{
Destroy(victoryEffectInstance);
}
}
#endregion
private void HandleGameStateChanged(GameState oldValue, GameState newValue)
{
OnGameStateChanged?.Invoke(newValue);
// UI 활성화/비활성화
UpdateUIVisibility(newValue);
if (debugMode)
{
Debug.Log($"[GameManager] State changed: {oldValue} -> {newValue}");
}
}
private void UpdateUIVisibility(GameState state)
{
// 게임 오버 UI
if (gameOverUIInstance != null)
{
gameOverUIInstance.SetActive(state == GameState.GameOver);
}
// 승리 UI
if (victoryUIInstance != null)
{
victoryUIInstance.SetActive(state == GameState.Victory);
}
// 승리 연출
if (victoryEffectInstance != null && state == GameState.Victory)
{
victoryEffectInstance.SetActive(true);
}
}
#region Player Death Tracking
private List<PlayerNetworkController> alivePlayers = new List<PlayerNetworkController>();
private IEnumerator WaitForPlayersAndSubscribe()
{
// 플레이어들이 스폰될 때까지 대기
yield return new WaitForSeconds(1f);
SubscribeToPlayerEvents();
// 게임 시작
SetGameState(GameState.Playing);
}
private void SubscribeToPlayerEvents()
{
var players = FindObjectsByType<PlayerNetworkController>(FindObjectsSortMode.None);
foreach (var player in players)
{
player.OnDeath += HandlePlayerDeath;
if (!player.IsDead)
{
alivePlayers.Add(player);
}
}
if (debugMode)
{
Debug.Log($"[GameManager] Subscribed to {players.Length} players, {alivePlayers.Count} alive");
}
}
private void UnsubscribeFromPlayerEvents()
{
var players = FindObjectsByType<PlayerNetworkController>(FindObjectsSortMode.None);
foreach (var player in players)
{
player.OnDeath -= HandlePlayerDeath;
}
alivePlayers.Clear();
}
private void HandlePlayerDeath(PlayerNetworkController player)
{
alivePlayers.Remove(player);
if (debugMode)
{
Debug.Log($"[GameManager] Player died. Alive: {alivePlayers.Count}");
}
// 모든 플레이어 사망 체크
if (alivePlayers.Count == 0)
{
TriggerGameOver();
}
}
#endregion
#region Boss Death Tracking
private void SubscribeToBossEvents()
{
BossEnemy.OnBossSpawned += HandleBossSpawned;
// 이미 스폰된 보스가 있는지 확인
if (BossEnemy.ActiveBoss != null)
{
SubscribeToBossDeath(BossEnemy.ActiveBoss);
}
}
private void UnsubscribeFromBossEvents()
{
BossEnemy.OnBossSpawned -= HandleBossSpawned;
}
private void HandleBossSpawned(BossEnemy boss)
{
SubscribeToBossDeath(boss);
if (debugMode)
{
Debug.Log($"[GameManager] Boss spawned: {boss.name}");
}
}
private void SubscribeToBossDeath(BossEnemy boss)
{
boss.OnDeath += HandleBossDeath;
}
private void HandleBossDeath()
{
if (debugMode)
{
Debug.Log("[GameManager] Boss died!");
}
TriggerVictory();
}
#endregion
#region Game State Management
private void SetGameState(GameState newState)
{
if (!IsServer) return;
currentState.Value = newState;
}
/// <summary>
/// 게임 오버 처리 (서버에서만 실행)
/// </summary>
public void TriggerGameOver()
{
if (!IsServer || currentState.Value != GameState.Playing) return;
SetGameState(GameState.GameOver);
OnGameOver?.Invoke();
if (debugMode)
{
Debug.Log("[GameManager] Game Over!");
}
// N초 후 씬 재시작
StartCoroutine(RestartSceneAfterDelay(gameOverRestartDelay));
}
/// <summary>
/// 승리 처리 (서버에서만 실행)
/// </summary>
public void TriggerVictory()
{
if (!IsServer || currentState.Value != GameState.Playing) return;
SetGameState(GameState.Victory);
OnVictory?.Invoke();
if (debugMode)
{
Debug.Log("[GameManager] Victory!");
}
// N초 후 씬 재시작 (또는 로비로 이동)
StartCoroutine(RestartSceneAfterDelay(victoryToLobbyDelay));
}
private IEnumerator RestartSceneAfterDelay(float delay)
{
yield return new WaitForSeconds(delay);
// 현재 씬 다시 로드
string currentScene = SceneManager.GetActiveScene().name;
if (IsServer)
{
// 네트워크 씬 관리 사용
NetworkManager.Singleton.SceneManager.LoadScene(currentScene, LoadSceneMode.Single);
}
}
#endregion
#region Utility
/// <summary>
/// 살아있는 플레이어 목록 반환
/// </summary>
public List<PlayerNetworkController> GetAlivePlayers()
{
return alivePlayers.Where(p => p != null && !p.IsDead).ToList();
}
/// <summary>
/// 랜덤한 살아있는 플레이어 반환 (관전용)
/// </summary>
public PlayerNetworkController GetRandomAlivePlayer()
{
var alive = GetAlivePlayers();
if (alive.Count == 0) return null;
return alive[UnityEngine.Random.Range(0, alive.Count)];
}
#endregion
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 7bde02fc6ca2ab0468bb3ce777206089

View File

@@ -1,5 +1,6 @@
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.SceneManagement;
namespace Colosseum.Player
{
@@ -20,11 +21,35 @@ namespace Colosseum.Player
private float pitch;
private Camera cameraInstance;
private InputSystem_Actions inputActions;
private bool isSpectating = false;
public Transform Target => target;
public bool IsSpectating => isSpectating;
private void OnEnable()
{
SceneManager.sceneLoaded += OnSceneLoaded;
}
private void OnDisable()
{
SceneManager.sceneLoaded -= OnSceneLoaded;
}
private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
// 씬 로드 시 카메라 참조 갱신
RefreshCamera();
SnapToTarget();
Debug.Log($"[PlayerCamera] Scene loaded, camera refreshed");
}
public void Initialize(Transform playerTransform, InputSystem_Actions actions)
{
target = playerTransform;
inputActions = actions;
isSpectating = false;
// 기존 메인 카메라 사용 또는 새로 생성
cameraInstance = Camera.main;
@@ -36,12 +61,73 @@ namespace Colosseum.Player
}
// 초기 각도
yaw = target.eulerAngles.y;
if (target != null)
{
yaw = target.eulerAngles.y;
}
pitch = 20f;
// 카메라 위치를 즉시 타겟 위치로 초기화
SnapToTarget();
}
/// <summary>
/// 관전 대상 변경
/// </summary>
public void SetTarget(Transform newTarget)
{
if (newTarget == null) return;
target = newTarget;
isSpectating = true;
// 부드러운 전환을 위해 현재 카메라 위치에서 새 타겟으로
yaw = target.eulerAngles.y;
Debug.Log($"[PlayerCamera] Now spectating: {target.name}");
}
/// <summary>
/// 원래 플레이어로 복귀
/// </summary>
public void ResetToPlayer(Transform playerTransform)
{
target = playerTransform;
isSpectating = false;
}
/// <summary>
/// 카메라 위치를 타겟 위치로 즉시 이동 (부드러운 전환 없이)
/// </summary>
public void SnapToTarget()
{
if (target == null || cameraInstance == null) return;
Quaternion rotation = Quaternion.Euler(pitch, yaw, 0f);
Vector3 offset = rotation * new Vector3(0f, 0f, -distance);
offset.y += height;
cameraInstance.transform.position = target.position + offset;
cameraInstance.transform.LookAt(target.position + Vector3.up * height * 0.5f);
}
/// <summary>
/// 카메라 참조 갱신 (씬 전환 후 호출)
/// </summary>
public void RefreshCamera()
{
// 씬 전환 시 항상 새 카메라 참조 획득
cameraInstance = Camera.main;
}
private void LateUpdate()
{
// 카메라 참조가 없으면 갱신 시도
if (cameraInstance == null)
{
RefreshCamera();
}
if (target == null || cameraInstance == null) return;
HandleRotation();

View File

@@ -75,6 +75,17 @@ namespace Colosseum.Player
SetSpawnPosition();
// Input Actions 초기화
InitializeInputActions();
// 카메라 설정
SetupCamera();
}
/// <summary>
/// 입력 액션 초기화
/// </summary>
private void InitializeInputActions()
{
inputActions = new InputSystem_Actions();
inputActions.Player.Enable();
@@ -84,11 +95,42 @@ namespace Colosseum.Player
// Jump 액션 콜백 등록
inputActions.Player.Jump.performed += OnJumpPerformed;
// 카메라 설정
SetupCamera();
}
/// <summary>
/// 입력 액션 해제
/// </summary>
private void CleanupInputActions()
{
if (inputActions != null)
{
inputActions.Player.Move.performed -= OnMovePerformed;
inputActions.Player.Move.canceled -= OnMoveCanceled;
inputActions.Player.Jump.performed -= OnJumpPerformed;
inputActions.Player.Disable();
}
}
private void OnDisable()
{
// 컴포넌트 비활성화 시 입력 해제
CleanupInputActions();
// 입력 초기화
moveInput = Vector2.zero;
}
private void OnEnable()
{
// 컴포넌트 재활성화 시 입력 다시 등록
if (IsOwner && inputActions != null)
{
inputActions.Player.Enable();
inputActions.Player.Move.performed += OnMovePerformed;
inputActions.Player.Move.canceled += OnMoveCanceled;
inputActions.Player.Jump.performed += OnJumpPerformed;
}
}
/// <summary>
/// 스폰 위치 설정
@@ -107,34 +149,24 @@ namespace Colosseum.Player
}
}
/// <summary>
/// 네트워크 정리
/// 네트워크 정리
/// </summary>
public override void OnNetworkDespawn()
{
if (inputActions != null)
{
inputActions.Player.Move.performed -= OnMovePerformed;
inputActions.Player.Move.canceled -= OnMoveCanceled;
inputActions.Player.Jump.performed -= OnJumpPerformed;
inputActions.Disable();
}
CleanupInputActions();
}
private void OnMovePerformed(InputAction.CallbackContext context)
{
moveInput = context.ReadValue<Vector2>();
}
private void OnMoveCanceled(InputAction.CallbackContext context)
{
moveInput = Vector2.zero;
}
private void OnJumpPerformed(InputAction.CallbackContext context)
{
if (!isJumping && characterController.isGrounded)
@@ -143,7 +175,6 @@ namespace Colosseum.Player
}
}
private void SetupCamera()
{
var cameraController = GetComponent<PlayerCamera>();
@@ -154,6 +185,13 @@ namespace Colosseum.Player
cameraController.Initialize(transform, inputActions);
}
/// <summary>
/// 카메라 재설정 (씬 로드 후 호출)
/// </summary>
public void RefreshCamera()
{
SetupCamera();
}
private void Update()
{
@@ -163,7 +201,6 @@ namespace Colosseum.Player
Move();
}
private void ApplyGravity()
{
if (wasGrounded && velocity.y < 0)
@@ -176,7 +213,6 @@ namespace Colosseum.Player
}
}
private void Move()
{
if (characterController == null) return;
@@ -218,7 +254,6 @@ namespace Colosseum.Player
wasGrounded = characterController.isGrounded;
}
private void Jump()
{
isJumping = true;
@@ -232,7 +267,6 @@ namespace Colosseum.Player
}
}
/// <summary>
/// 점프 중 상태가 끝나면 IsJumping = false;
/// </summary>
@@ -241,7 +275,6 @@ namespace Colosseum.Player
isJumping = false;
}
private Vector3 TransformDirectionByCamera(Vector3 direction)
{
if (Camera.main == null) return direction;
@@ -259,7 +292,6 @@ namespace Colosseum.Player
return cameraRight * direction.x + cameraForward * direction.z;
}
/// <summary>
/// 루트 모션 처리. 스킬 애니메이션 중에 애니메이션의 이동/회전 데이터를 적용합니다.
/// </summary>

View File

@@ -18,6 +18,7 @@ namespace Colosseum.Player
// 네트워크 동기화 변수
private NetworkVariable<float> currentHealth = new NetworkVariable<float>(100f);
private NetworkVariable<float> currentMana = new NetworkVariable<float>(50f);
private NetworkVariable<bool> isDead = new NetworkVariable<bool>(false);
public float Health => currentHealth.Value;
public float Mana => currentMana.Value;
@@ -29,9 +30,13 @@ namespace Colosseum.Player
public event Action<float, float> OnHealthChanged; // (oldValue, newValue)
public event Action<float, float> OnManaChanged; // (oldValue, newValue)
// 사망 이벤트
public event Action<PlayerNetworkController> OnDeath;
public event Action<bool> OnDeathStateChanged; // (isDead)
// IDamageable 구현
public float CurrentHealth => currentHealth.Value;
public bool IsDead => currentHealth.Value <= 0f;
public bool IsDead => isDead.Value;
public override void OnNetworkSpawn()
{
@@ -44,12 +49,14 @@ namespace Colosseum.Player
// 네트워크 변수 변경 콜백 등록
currentHealth.OnValueChanged += HandleHealthChanged;
currentMana.OnValueChanged += HandleManaChanged;
isDead.OnValueChanged += HandleDeathStateChanged;
// 초기화
if (IsServer)
{
currentHealth.Value = MaxHealth;
currentMana.Value = MaxMana;
isDead.Value = false;
}
}
@@ -58,6 +65,7 @@ namespace Colosseum.Player
// 콜백 해제
currentHealth.OnValueChanged -= HandleHealthChanged;
currentMana.OnValueChanged -= HandleManaChanged;
isDead.OnValueChanged -= HandleDeathStateChanged;
}
private void HandleHealthChanged(float oldValue, float newValue)
@@ -70,12 +78,19 @@ namespace Colosseum.Player
OnManaChanged?.Invoke(oldValue, newValue);
}
private void HandleDeathStateChanged(bool oldValue, bool newValue)
{
OnDeathStateChanged?.Invoke(newValue);
}
/// <summary>
/// 대미지 적용 (서버에서만 실행)
/// </summary>
[Rpc(SendTo.Server)]
public void TakeDamageRpc(float damage)
{
if (isDead.Value) return;
currentHealth.Value = Mathf.Max(0f, currentHealth.Value - damage);
if (currentHealth.Value <= 0f)
@@ -111,10 +126,84 @@ namespace Colosseum.Player
currentMana.Value = Mathf.Min(MaxMana, currentMana.Value + amount);
}
/// <summary>
/// 사망 애니메이션 재생 (모든 클라이언트에서 실행)
/// </summary>
[Rpc(SendTo.Everyone)]
private void PlayDeathAnimationRpc()
{
var animator = GetComponentInChildren<Animator>();
if (animator != null)
{
animator.SetTrigger("Die");
}
}
/// <summary>
/// 사망 처리 (서버에서만 실행)
/// </summary>
private void HandleDeath()
{
// TODO: 사망 처리 로직
Debug.Log($"Player {OwnerClientId} died!");
if (isDead.Value) return;
isDead.Value = true;
// 이동 비활성화
var movement = GetComponent<PlayerMovement>();
if (movement != null)
{
movement.enabled = false;
}
// 스킬 입력 비활성화
var skillInput = GetComponent<PlayerSkillInput>();
if (skillInput != null)
{
skillInput.enabled = false;
}
// 모든 클라이언트에서 사망 애니메이션 재생
PlayDeathAnimationRpc();
// 사망 이벤트 발생
OnDeath?.Invoke(this);
Debug.Log($"[Player] Player {OwnerClientId} died!");
}
/// <summary>
/// 리스폰 (서버에서만 실행)
/// </summary>
public void Respawn()
{
if (!IsServer) return;
isDead.Value = false;
currentHealth.Value = MaxHealth;
currentMana.Value = MaxMana;
// 이동 재활성화
var movement = GetComponent<PlayerMovement>();
if (movement != null)
{
movement.enabled = true;
}
// 스킬 입력 재활성화
var skillInput = GetComponent<PlayerSkillInput>();
if (skillInput != null)
{
skillInput.enabled = true;
}
// 애니메이션 리셋
var animator = GetComponentInChildren<Animator>();
if (animator != null)
{
animator.Rebind();
}
Debug.Log($"[Player] Player {OwnerClientId} respawned!");
}
#region IDamageable
@@ -123,7 +212,7 @@ namespace Colosseum.Player
/// </summary>
public float TakeDamage(float damage, object source = null)
{
if (!IsServer) return 0f;
if (!IsServer || isDead.Value) return 0f;
float actualDamage = Mathf.Min(damage, currentHealth.Value);
currentHealth.Value = Mathf.Max(0f, currentHealth.Value - damage);
@@ -141,7 +230,7 @@ namespace Colosseum.Player
/// </summary>
public float Heal(float amount)
{
if (!IsServer) return 0f;
if (!IsServer || isDead.Value) return 0f;
float actualHeal = Mathf.Min(amount, MaxHealth - currentHealth.Value);
currentHealth.Value = Mathf.Min(MaxHealth, currentHealth.Value + amount);

View File

@@ -107,6 +107,10 @@ namespace Colosseum.Player
return;
}
// 사망 상태 체크
if (networkController != null && networkController.IsDead)
return;
// 로컬 체크 (빠른 피드백용)
if (skillController.IsExecutingSkill)
{
@@ -145,6 +149,10 @@ namespace Colosseum.Player
if (skill == null) return;
// 서버에서 다시 검증
// 사망 상태 체크
if (networkController != null && networkController.IsDead)
return;
if (skillController.IsExecutingSkill || skillController.IsOnCooldown(skill))
return;

View File

@@ -0,0 +1,195 @@
using System.Collections.Generic;
using UnityEngine;
using Colosseum.Player;
namespace Colosseum.Player
{
/// <summary>
/// 플레이어 관전 시스템.
/// 사망한 플레이어가 살아있는 플레이어를 관찰할 수 있게 합니다.
/// </summary>
public class PlayerSpectator : MonoBehaviour
{
[Header("References")]
[Tooltip("PlayerCamera 컴포넌트")]
[SerializeField] private PlayerCamera playerCamera;
[Tooltip("PlayerNetworkController 컴포넌트")]
[SerializeField] private PlayerNetworkController networkController;
[Header("Spectate Settings")]
[Tooltip("관전 대상 전환 키")]
[SerializeField] private KeyCode nextTargetKey = KeyCode.Tab;
[Tooltip("관전 UI 표시 여부")]
[SerializeField] private bool showSpectateUI = true;
// 관전 상태
private bool isSpectating = false;
private int currentSpectateIndex = 0;
private List<PlayerNetworkController> alivePlayers = new List<PlayerNetworkController>();
// 이벤트
public event System.Action<bool> OnSpectateModeChanged; // (isSpectating)
public event System.Action<PlayerNetworkController> OnSpectateTargetChanged;
// Properties
public bool IsSpectating => isSpectating;
public PlayerNetworkController CurrentTarget => alivePlayers.Count > currentSpectateIndex ? alivePlayers[currentSpectateIndex] : null;
private void Awake()
{
// 컴포넌트 자동 참조
if (playerCamera == null)
playerCamera = GetComponent<PlayerCamera>();
if (networkController == null)
networkController = GetComponentInParent<PlayerNetworkController>();
}
private void Start()
{
if (networkController != null)
{
networkController.OnDeathStateChanged += HandleDeathStateChanged;
}
}
private void OnDestroy()
{
if (networkController != null)
{
networkController.OnDeathStateChanged -= HandleDeathStateChanged;
}
}
private void Update()
{
if (!isSpectating) return;
// Tab 키로 다음 관전 대상 전환
if (Input.GetKeyDown(nextTargetKey))
{
CycleToNextTarget();
}
}
private void HandleDeathStateChanged(bool dead)
{
if (dead)
{
StartSpectating();
}
else
{
StopSpectating();
}
}
/// <summary>
/// 관전 모드 시작
/// </summary>
private void StartSpectating()
{
// 살아있는 플레이어 목록 갱신
RefreshAlivePlayers();
if (alivePlayers.Count == 0)
{
// 관전할 플레이어가 없음 (게임 오버)
Debug.Log("[PlayerSpectator] No alive players to spectate");
return;
}
isSpectating = true;
currentSpectateIndex = 0;
// 첫 번째 살아있는 플레이어 관전
SetSpectateTarget(alivePlayers[currentSpectateIndex]);
OnSpectateModeChanged?.Invoke(true);
Debug.Log($"[PlayerSpectator] Started spectating. {alivePlayers.Count} players alive.");
}
/// <summary>
/// 관전 모드 종료
/// </summary>
private void StopSpectating()
{
isSpectating = false;
alivePlayers.Clear();
currentSpectateIndex = 0;
// 원래 플레이어로 카메라 복귀
if (playerCamera != null && networkController != null)
{
playerCamera.ResetToPlayer(networkController.transform);
}
OnSpectateModeChanged?.Invoke(false);
Debug.Log("[PlayerSpectator] Stopped spectating");
}
/// <summary>
/// 살아있는 플레이어 목록 갱신
/// </summary>
private void RefreshAlivePlayers()
{
alivePlayers.Clear();
var allPlayers = FindObjectsByType<PlayerNetworkController>(FindObjectsSortMode.None);
foreach (var player in allPlayers)
{
// 자신이 아니고, 살아있는 플레이어만 추가
if (player != networkController && !player.IsDead)
{
alivePlayers.Add(player);
}
}
}
/// <summary>
/// 다음 관전 대상으로 전환
/// </summary>
private void CycleToNextTarget()
{
if (alivePlayers.Count == 0) return;
// 목록 갱신 (중간에 사망했을 수 있음)
RefreshAlivePlayers();
if (alivePlayers.Count == 0)
{
Debug.Log("[PlayerSpectator] No more alive players");
return;
}
currentSpectateIndex = (currentSpectateIndex + 1) % alivePlayers.Count;
SetSpectateTarget(alivePlayers[currentSpectateIndex]);
}
/// <summary>
/// 관전 대상 설정
/// </summary>
private void SetSpectateTarget(PlayerNetworkController target)
{
if (target == null || playerCamera == null) return;
playerCamera.SetTarget(target.transform);
OnSpectateTargetChanged?.Invoke(target);
Debug.Log($"[PlayerSpectator] Now spectating: Player {target.OwnerClientId}");
}
/// <summary>
/// 현재 관전 대상 이름 반환 (UI용)
/// </summary>
public string GetCurrentTargetName()
{
var target = CurrentTarget;
if (target == null) return "None";
return $"Player {target.OwnerClientId}";
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: ace7240dc9e5c834892fc1a0e4ea657e

View File

@@ -104,6 +104,14 @@ namespace Colosseum.Skills
return false;
}
// 사망 상태면 스킬 사용 불가
var damageable = GetComponent<Colosseum.Combat.IDamageable>();
if (damageable != null && damageable.IsDead)
{
if (debugMode) Debug.Log($"[Skill] Cannot execute skill - owner is dead");
return false;
}
if (IsExecutingSkill)
{
if (debugMode) Debug.Log($"Already executing skill: {currentSkill.SkillName}");
@@ -204,6 +212,14 @@ namespace Colosseum.Skills
return;
}
// 사망 상태면 효과 발동 중단
var damageable = GetComponent<Colosseum.Combat.IDamageable>();
if (damageable != null && damageable.IsDead)
{
if (debugMode) Debug.Log($"[Effect] Cancelled - owner is dead");
return;
}
var effects = currentSkill.Effects;
if (index < 0 || index >= effects.Count)
{

View File

@@ -0,0 +1,59 @@
using UnityEngine;
using UnityEngine.UI;
using TMPro;
namespace Colosseum.UI
{
/// <summary>
/// 게임 오버 UI 컨트롤러.
/// GameManager에 의해 활성화/비활성화됩니다.
/// </summary>
public class GameOverUI : MonoBehaviour
{
[Header("UI References")]
[Tooltip("게임 오버 텍스트")]
[SerializeField] private TMP_Text gameOverText;
[Tooltip("재시작 카운트다운 텍스트")]
[SerializeField] private TMP_Text countdownText;
[Tooltip("게임 오버 애니메이터")]
[SerializeField] private Animator animator;
[Header("Settings")]
[Tooltip("게임 오버 텍스트")]
[SerializeField] private string gameOverMessage = "GAME OVER";
[Tooltip("텍스트 색상")]
[SerializeField] private Color textColor = Color.red;
private void Start()
{
if (gameOverText != null)
{
gameOverText.text = gameOverMessage;
gameOverText.color = textColor;
}
}
private void OnEnable()
{
// 애니메이션 재생
if (animator != null)
{
animator.SetTrigger("Show");
}
}
/// <summary>
/// 카운트다운 텍스트 업데이트
/// </summary>
public void UpdateCountdown(int seconds)
{
if (countdownText != null)
{
countdownText.text = $"Restarting in {seconds}...";
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: f87daf25f7fc5c4499b66d327b6c4cf2

View File

@@ -0,0 +1,55 @@
using UnityEngine;
using UnityEngine.UI;
using TMPro;
using Colosseum.Enemy;
namespace Colosseum.UI
{
/// <summary>
/// 승리 UI 컨트롤러.
/// GameManager에 의해 활성화/비활성화됩니다.
/// </summary>
public class VictoryUI : MonoBehaviour
{
[Header("UI References")]
[Tooltip("승리 텍스트")]
[SerializeField] private TMP_Text victoryText;
[Tooltip("보스 이름 텍스트")]
[SerializeField] private TMP_Text bossNameText;
[Tooltip("승리 애니메이터")]
[SerializeField] private Animator animator;
[Header("Settings")]
[Tooltip("승리 텍스트")]
[SerializeField] private string victoryMessage = "VICTORY!";
[Tooltip("텍스트 색상")]
[SerializeField] private Color textColor = Color.yellow;
private void Start()
{
if (victoryText != null)
{
victoryText.text = victoryMessage;
victoryText.color = textColor;
}
}
private void OnEnable()
{
// 보스 이름 표시
if (bossNameText != null && BossEnemy.ActiveBoss != null)
{
bossNameText.text = $"{BossEnemy.ActiveBoss.name} Defeated!";
}
// 애니메이션 재생
if (animator != null)
{
animator.SetTrigger("Show");
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 514ff17abf102744faf81dbad1251d86

8
Assets/UI.meta Normal file
View File

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

407
Assets/UI/GameOverUI.prefab Normal file
View File

@@ -0,0 +1,407 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &162577879235020810
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6109749063779144982}
- component: {fileID: 1992416582183126197}
- component: {fileID: 4959534019430341632}
m_Layer: 5
m_Name: Panel
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6109749063779144982
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 162577879235020810}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4163202138303394689}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1992416582183126197
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 162577879235020810}
m_CullTransparentMesh: 1
--- !u!114 &4959534019430341632
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 162577879235020810}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0.392}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &1728479283364781770
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4148806134096376600}
- component: {fileID: 7574421299062878701}
- component: {fileID: 8706607564708062978}
m_Layer: 5
m_Name: Countdown Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4148806134096376600
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1728479283364781770}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4163202138303394689}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: -40}
m_SizeDelta: {x: 200, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7574421299062878701
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1728479283364781770}
m_CullTransparentMesh: 1
--- !u!114 &8706607564708062978
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1728479283364781770}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: 10
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 256
m_textAlignment: 65535
m_characterSpacing: 0
m_characterHorizontalScale: 1
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &1938792592198155266
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4163202138303394689}
- component: {fileID: 2357082315040616664}
m_Layer: 5
m_Name: GameOverUI
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4163202138303394689
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1938792592198155266}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 6109749063779144982}
- {fileID: 4076138169726692703}
- {fileID: 4148806134096376600}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 1000, y: 400}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &2357082315040616664
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1938792592198155266}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f87daf25f7fc5c4499b66d327b6c4cf2, type: 3}
m_Name:
m_EditorClassIdentifier: Colosseum.Game::Colosseum.UI.GameOverUI
gameOverText: {fileID: 2190484291226054109}
countdownText: {fileID: 8706607564708062978}
animator: {fileID: 0}
gameOverMessage: GAME OVER
textColor: {r: 1, g: 0, b: 0, a: 1}
--- !u!1 &6913274211359747875
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4076138169726692703}
- component: {fileID: 8449413046750003098}
- component: {fileID: 2190484291226054109}
m_Layer: 5
m_Name: GameOver Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4076138169726692703
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6913274211359747875}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4163202138303394689}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 200, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8449413046750003098
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6913274211359747875}
m_CullTransparentMesh: 1
--- !u!114 &2190484291226054109
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6913274211359747875}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Game Over
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 256
m_textAlignment: 65535
m_characterSpacing: 0
m_characterHorizontalScale: 1
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}

View File

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

8
Assets/Weapons.meta Normal file
View File

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

View File

@@ -0,0 +1,31 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 52134ecd4c816f64888d34b2163e7af1, type: 3}
m_Name: NewWeapon
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Weapons.WeaponData
weaponName: "\uAC80"
description:
icon: {fileID: 21300000, guid: 70e07ab1b9f326b4bae30fe839d609ea, type: 3}
weaponSlot: 0
weaponPrefab: {fileID: 1631607032641582, guid: 92cfe4029ea2b754caa0b3f00d52d41a, type: 3}
positionOffset: {x: 0, y: 0, z: 0}
rotationOffset: {x: 0, y: 0, z: 0}
scale: {x: 1, y: 1, z: 1}
strengthBonus: 0
dexterityBonus: 0
intelligenceBonus: 0
vitalityBonus: 0
wisdomBonus: 0
spiritBonus: 0
damageMultiplier: 1
rangeMultiplier: 1
manaCostMultiplier: 1

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 646964ccbda84e947b97537d7f7813aa
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,81 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1631607032641582
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4561571508225656}
- component: {fileID: 33122181552623900}
- component: {fileID: 23019494539852092}
m_Layer: 0
m_Name: SM_Wep_Sword_01
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4561571508225656
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1631607032641582}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &33122181552623900
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1631607032641582}
m_Mesh: {fileID: 4300000, guid: a29e10a78af23e243949a44795e2787f, type: 3}
--- !u!23 &23019494539852092
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1631607032641582}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: ea128b040f8b0af4c9d2de400aaff30a, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 92cfe4029ea2b754caa0b3f00d52d41a
timeCreated: 1554786157
licenseType: Store
NativeFormatImporter:
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,5 +1,9 @@
<Solution>
<Project Path="Assembly-CSharp.csproj" />
<Project Path="Colosseum.Game.csproj" />
<Project Path="SidekickCharacters.csproj" />
<Project Path="Gilzoide.SqliteNet.csproj" />
<Project Path="Assembly-CSharp-Editor.csproj" />
<Project Path="SidekickCharacters.Editor.csproj" />
<Project Path="Gilzoide.SqliteNet.Tests.Editor.csproj" />
</Solution>