Merge pull request #9 from Degulleo/DEG-28-몬스터-모델-생성-및-기본-스크립트-작성
DEG-28 몬스터 모델 생성 및 기본 스크립트 작성
This commit is contained in:
commit
116473ccc6
@ -1,8 +1,10 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: fb977eee32cc2024181234437bfb8480
|
guid: 612dfb3f3c0e45e3aaa9d5def5189516
|
||||||
|
timeCreated: 1744852718
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
||||||
|
|
||||||
|
83
Assets/Editor/EnemyControllerEditor.cs
Normal file
83
Assets/Editor/EnemyControllerEditor.cs
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
[CustomEditor(typeof(PldDogController))]
|
||||||
|
public class EnemyControllerEditor : Editor
|
||||||
|
{
|
||||||
|
public override void OnInspectorGUI()
|
||||||
|
{
|
||||||
|
// 기본 인스펙터를 그리기
|
||||||
|
base.OnInspectorGUI();
|
||||||
|
|
||||||
|
// 타겟 컴포넌트 참조 가져오기
|
||||||
|
EnemyController enemyController = (EnemyController)target;
|
||||||
|
|
||||||
|
// 여백 추가
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
EditorGUILayout.LabelField("상태 디버그 정보", EditorStyles.boldLabel);
|
||||||
|
|
||||||
|
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||||
|
|
||||||
|
// 상태별 색상 지정
|
||||||
|
switch (enemyController.CurrentState)
|
||||||
|
{
|
||||||
|
case EnemyState.Idle:
|
||||||
|
GUI.backgroundColor = new Color(0, 0, 1, 1f);
|
||||||
|
break;
|
||||||
|
case EnemyState.Trace:
|
||||||
|
GUI.backgroundColor = new Color(1, 0, 1, 1f);
|
||||||
|
break;
|
||||||
|
case EnemyState.Attack:
|
||||||
|
GUI.backgroundColor = new Color(1, 1, 0, 1f);
|
||||||
|
break;
|
||||||
|
case EnemyState.Move:
|
||||||
|
GUI.backgroundColor = new Color(0, 1, 1, 1f);
|
||||||
|
break;
|
||||||
|
case EnemyState.GetHit:
|
||||||
|
GUI.backgroundColor = new Color(0.1f, 0.1f, 0.1f, 1f);
|
||||||
|
break;
|
||||||
|
case EnemyState.Dead:
|
||||||
|
GUI.backgroundColor = new Color(1, 0, 0, 1f);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
||||||
|
EditorGUILayout.LabelField("현재 상태", enemyController.CurrentState.ToString(),
|
||||||
|
EditorStyles.boldLabel);
|
||||||
|
EditorGUILayout.EndVertical();
|
||||||
|
|
||||||
|
EditorGUILayout.EndVertical();
|
||||||
|
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
GUI.backgroundColor= Color.clear;
|
||||||
|
EditorGUILayout.LabelField("상태 변경", EditorStyles.boldLabel);
|
||||||
|
|
||||||
|
EditorGUILayout.BeginHorizontal();
|
||||||
|
if (GUILayout.Button("Idle")) enemyController.SetState(EnemyState.Idle);
|
||||||
|
if (GUILayout.Button("Trace")) enemyController.SetState(EnemyState.Trace);
|
||||||
|
if (GUILayout.Button("Attack")) enemyController.SetState(EnemyState.Attack);
|
||||||
|
EditorGUILayout.EndHorizontal();
|
||||||
|
|
||||||
|
EditorGUILayout.BeginHorizontal();
|
||||||
|
if (GUILayout.Button("Move")) enemyController.SetState(EnemyState.Move);
|
||||||
|
if (GUILayout.Button("GetHit")) enemyController.SetState(EnemyState.GetHit);
|
||||||
|
if (GUILayout.Button("Dead")) enemyController.SetState(EnemyState.Dead);
|
||||||
|
EditorGUILayout.EndHorizontal();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
EditorApplication.update += OnEditorUpdate;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDisable()
|
||||||
|
{
|
||||||
|
EditorApplication.update -= OnEditorUpdate;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnEditorUpdate()
|
||||||
|
{
|
||||||
|
if (target != null)
|
||||||
|
Repaint();
|
||||||
|
}
|
||||||
|
}
|
3
Assets/Editor/EnemyControllerEditor.cs.meta
Normal file
3
Assets/Editor/EnemyControllerEditor.cs.meta
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9e73fc154fc447fea93336f02b6df5ea
|
||||||
|
timeCreated: 1744852745
|
8
Assets/JYY/Animation.meta
Normal file
8
Assets/JYY/Animation.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 705f5cc824e16644497801b43f81b1c1
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Animation/Attack01 Slash.anim
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Animation/Attack01 Slash.anim
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Assets/JYY/Animation/Attack01 Slash.anim.meta
Normal file
8
Assets/JYY/Animation/Attack01 Slash.anim.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: df0c94f0a0eae85438a0bfc0deea8791
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Animation/Attack01.anim
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Animation/Attack01.anim
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Assets/JYY/Animation/Attack01.anim.meta
Normal file
8
Assets/JYY/Animation/Attack01.anim.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 34b2cc555a0977644ab2d9e2350a939d
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Animation/Attack02.anim
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Animation/Attack02.anim
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Assets/JYY/Animation/Attack02.anim.meta
Normal file
8
Assets/JYY/Animation/Attack02.anim.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: eccbae3cfc77ad245ade46e143aa3200
|
||||||
|
timeCreated: 1544605040
|
||||||
|
licenseType: Store
|
||||||
|
NativeFormatImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Animation/Defend.anim
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Animation/Defend.anim
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Assets/JYY/Animation/Defend.anim.meta
Normal file
8
Assets/JYY/Animation/Defend.anim.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cf357b5409b4ad54a82c45d7684564e1
|
||||||
|
timeCreated: 1544607741
|
||||||
|
licenseType: Store
|
||||||
|
NativeFormatImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Animation/Die.anim
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Animation/Die.anim
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Assets/JYY/Animation/Die.anim.meta
Normal file
8
Assets/JYY/Animation/Die.anim.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5d190d8211c88a64281f7b90c69f3eb3
|
||||||
|
timeCreated: 1544605073
|
||||||
|
licenseType: Store
|
||||||
|
NativeFormatImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Animation/DieRecover.anim
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Animation/DieRecover.anim
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Assets/JYY/Animation/DieRecover.anim.meta
Normal file
8
Assets/JYY/Animation/DieRecover.anim.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4a3671dbe6670524b8b6d9ad3664c179
|
||||||
|
timeCreated: 1544607752
|
||||||
|
licenseType: Store
|
||||||
|
NativeFormatImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Animation/Dizzy.anim
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Animation/Dizzy.anim
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Assets/JYY/Animation/Dizzy.anim.meta
Normal file
8
Assets/JYY/Animation/Dizzy.anim.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 30d4fe7af77240a44b9354aaed8e5beb
|
||||||
|
timeCreated: 1544607757
|
||||||
|
licenseType: Store
|
||||||
|
NativeFormatImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Animation/GetHit.anim
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Animation/GetHit.anim
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Assets/JYY/Animation/GetHit.anim.meta
Normal file
8
Assets/JYY/Animation/GetHit.anim.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1588532e68f51a040bda71c68cfab177
|
||||||
|
timeCreated: 1544605085
|
||||||
|
licenseType: Store
|
||||||
|
NativeFormatImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Animation/Idle_Battle.anim
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Animation/Idle_Battle.anim
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Assets/JYY/Animation/Idle_Battle.anim.meta
Normal file
8
Assets/JYY/Animation/Idle_Battle.anim.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b79ff7bb68348be479d3db6b7fe8a569
|
||||||
|
timeCreated: 1544605090
|
||||||
|
licenseType: Store
|
||||||
|
NativeFormatImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Animation/RunForwardBattle.anim
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Animation/RunForwardBattle.anim
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Assets/JYY/Animation/RunForwardBattle.anim.meta
Normal file
8
Assets/JYY/Animation/RunForwardBattle.anim.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9f0e03164414016409d28995a128ba98
|
||||||
|
timeCreated: 1544605137
|
||||||
|
licenseType: Store
|
||||||
|
NativeFormatImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Animation/ShakeSwordVerti.anim
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Animation/ShakeSwordVerti.anim
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Assets/JYY/Animation/ShakeSwordVerti.anim.meta
Normal file
8
Assets/JYY/Animation/ShakeSwordVerti.anim.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8cda71f7a8c35a448a6e9999adab5bc1
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Animation/WalkForwardBattle.anim
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Animation/WalkForwardBattle.anim
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Assets/JYY/Animation/WalkForwardBattle.anim.meta
Normal file
8
Assets/JYY/Animation/WalkForwardBattle.anim.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f0c8c1d913b359a428b42d53947d3e93
|
||||||
|
timeCreated: 1544607284
|
||||||
|
licenseType: Store
|
||||||
|
NativeFormatImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Animation/WindUp.anim
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Animation/WindUp.anim
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Assets/JYY/Animation/WindUp.anim.meta
Normal file
8
Assets/JYY/Animation/WindUp.anim.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8d4a1a2c3f67c5c45a3a85dbf83e008b
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
Assets/JYY/Animator.meta
Normal file
8
Assets/JYY/Animator.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 47617fd7d9aae9841b8df03a9c71aab2
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
3
Assets/JYY/Animator/PldDogControl.controller
Normal file
3
Assets/JYY/Animator/PldDogControl.controller
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:b9e37c8d0a91f3599d34a7715c632cbcf76fd3c0a96c5d5335ab9d6ff65d3b4c
|
||||||
|
size 18916
|
8
Assets/JYY/Animator/PldDogControl.controller.meta
Normal file
8
Assets/JYY/Animator/PldDogControl.controller.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0a0b0196c516e454bbdb102f6dba08cf
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 9100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
Assets/JYY/Materials.meta
Normal file
8
Assets/JYY/Materials.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2e841b33c73e8fd44a8cf0bc9c1ae488
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Materials/AOEIndicatorChariot.mat
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Materials/AOEIndicatorChariot.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Assets/JYY/Materials/AOEIndicatorChariot.mat.meta
Normal file
8
Assets/JYY/Materials/AOEIndicatorChariot.mat.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 478a013fb343575418a252ed84af0c58
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Materials/AOEIndicatorDynamo.mat
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Materials/AOEIndicatorDynamo.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Assets/JYY/Materials/AOEIndicatorDynamo.mat.meta
Normal file
8
Assets/JYY/Materials/AOEIndicatorDynamo.mat.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 10d4d2e86cc374845a5268c025ab7c9b
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Materials/AOEIndicatorHorizontal.mat
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Materials/AOEIndicatorHorizontal.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Assets/JYY/Materials/AOEIndicatorHorizontal.mat.meta
Normal file
8
Assets/JYY/Materials/AOEIndicatorHorizontal.mat.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fdb8e6efac281d245a59752551f80076
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Materials/AOEIndicatorVertical.mat
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Materials/AOEIndicatorVertical.mat
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Assets/JYY/Materials/AOEIndicatorVertical.mat.meta
Normal file
8
Assets/JYY/Materials/AOEIndicatorVertical.mat.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1d7ccfbc83f505c4abd39cdc31630463
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
Assets/JYY/Prefabs.meta
Normal file
8
Assets/JYY/Prefabs.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 622537ed9949f364799229e66b81e7e0
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Prefabs/AOEIndicator.prefab
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Prefabs/AOEIndicator.prefab
(Stored with Git LFS)
Normal file
Binary file not shown.
7
Assets/JYY/Prefabs/AOEIndicator.prefab.meta
Normal file
7
Assets/JYY/Prefabs/AOEIndicator.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 36d2fcfec062c074ba2dad3a0b0116be
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Prefabs/AOEIndicatorChariot.prefab
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Prefabs/AOEIndicatorChariot.prefab
(Stored with Git LFS)
Normal file
Binary file not shown.
7
Assets/JYY/Prefabs/AOEIndicatorChariot.prefab.meta
Normal file
7
Assets/JYY/Prefabs/AOEIndicatorChariot.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e9e020ef2784edf4ca2a83ae9e1edefd
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Prefabs/AOEIndicatorDynamo.prefab
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Prefabs/AOEIndicatorDynamo.prefab
(Stored with Git LFS)
Normal file
Binary file not shown.
7
Assets/JYY/Prefabs/AOEIndicatorDynamo.prefab.meta
Normal file
7
Assets/JYY/Prefabs/AOEIndicatorDynamo.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 12018c889dca23d46a0d3807213c6a79
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
3
Assets/JYY/Prefabs/AOEIndicatorHorizontal.prefab
Normal file
3
Assets/JYY/Prefabs/AOEIndicatorHorizontal.prefab
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:e5dfaa59aeffa4e948edd40e96f05e2c708e491bb80c2a3446d9d1335b05adf0
|
||||||
|
size 3995
|
7
Assets/JYY/Prefabs/AOEIndicatorHorizontal.prefab.meta
Normal file
7
Assets/JYY/Prefabs/AOEIndicatorHorizontal.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 44d67bf59c049fb46876a549120a16d7
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Prefabs/AOEIndicatorVertical.prefab
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Prefabs/AOEIndicatorVertical.prefab
(Stored with Git LFS)
Normal file
Binary file not shown.
7
Assets/JYY/Prefabs/AOEIndicatorVertical.prefab.meta
Normal file
7
Assets/JYY/Prefabs/AOEIndicatorVertical.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9adff7c5e2e43974fa9f2d241ef2e433
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
3
Assets/JYY/Prefabs/[Enemy] PldDog.prefab
Normal file
3
Assets/JYY/Prefabs/[Enemy] PldDog.prefab
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:c7b23e4a2f6475f6cfe0641a03fd4415fe2b732fe649a14f93b72ea104f250f3
|
||||||
|
size 80026
|
7
Assets/JYY/Prefabs/[Enemy] PldDog.prefab.meta
Normal file
7
Assets/JYY/Prefabs/[Enemy] PldDog.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 84456bef5d2de2149ade477b93bc9ea0
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
Assets/JYY/Scenes/MonsterTest.meta
Normal file
8
Assets/JYY/Scenes/MonsterTest.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f736a70ba6c488a48b743638353258e9
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:e5c3fd6cb0241bd3da476e5c911552fc2fe06e6e12775af7da0145389a8ab1f2
|
oid sha256:ec97ec66df4283ed273c243f4aa1642c492661d1163184ce650d833e5a36bd87
|
||||||
size 89686
|
size 19269
|
||||||
|
BIN
Assets/JYY/Scenes/MonsterTest/NavMesh-Plane.asset
Normal file
BIN
Assets/JYY/Scenes/MonsterTest/NavMesh-Plane.asset
Normal file
Binary file not shown.
8
Assets/JYY/Scenes/MonsterTest/NavMesh-Plane.asset.meta
Normal file
8
Assets/JYY/Scenes/MonsterTest/NavMesh-Plane.asset.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0ea1affa28401cb4388633bac551449a
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 23800000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
Assets/JYY/Sprites.meta
Normal file
8
Assets/JYY/Sprites.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d7dcd0a2efc35e04287877979738ea37
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Sprites/AOEIndicator.png
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Sprites/AOEIndicator.png
(Stored with Git LFS)
Normal file
Binary file not shown.
127
Assets/JYY/Sprites/AOEIndicator.png.meta
Normal file
127
Assets/JYY/Sprites/AOEIndicator.png.meta
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fab9fda9e2e50b1458af69d2b01d167c
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 1
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
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: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 2
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Sprites/AOEIndicatorDynamo.png
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Sprites/AOEIndicatorDynamo.png
(Stored with Git LFS)
Normal file
Binary file not shown.
127
Assets/JYY/Sprites/AOEIndicatorDynamo.png.meta
Normal file
127
Assets/JYY/Sprites/AOEIndicatorDynamo.png.meta
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e5e22a589905e4d45b9b2cdec3f43271
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 1
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
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: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 2
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Sprites/AOEIndicatorHorizontal.png
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Sprites/AOEIndicatorHorizontal.png
(Stored with Git LFS)
Normal file
Binary file not shown.
127
Assets/JYY/Sprites/AOEIndicatorHorizontal.png.meta
Normal file
127
Assets/JYY/Sprites/AOEIndicatorHorizontal.png.meta
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 63954103bdc17f042bbabad6acdbbc65
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 1
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
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: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 2
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/JYY/Sprites/AOEIndicatorVertical.png
(Stored with Git LFS)
Normal file
BIN
Assets/JYY/Sprites/AOEIndicatorVertical.png
(Stored with Git LFS)
Normal file
Binary file not shown.
127
Assets/JYY/Sprites/AOEIndicatorVertical.png.meta
Normal file
127
Assets/JYY/Sprites/AOEIndicatorVertical.png.meta
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cf8a73df42451cb408f68dca120806e1
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 1
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
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: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 2
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -11,7 +11,8 @@ public abstract class CharacterBase : MonoBehaviour
|
|||||||
public float attackPower = 10f; // 공격력
|
public float attackPower = 10f; // 공격력
|
||||||
public float defensePower = 5f; // 방어력
|
public float defensePower = 5f; // 방어력
|
||||||
public float moveSpeed = 5f; // 이동 속도
|
public float moveSpeed = 5f; // 이동 속도
|
||||||
public float gravity = -9.81f; // 중력
|
|
||||||
|
protected readonly float gravity = -9.81f; // 중력
|
||||||
|
|
||||||
[Header("상태 이상")]
|
[Header("상태 이상")]
|
||||||
public List<StatusEffect> statusEffects = new List<StatusEffect>();
|
public List<StatusEffect> statusEffects = new List<StatusEffect>();
|
||||||
|
8
Assets/Scripts/Character/Enemy.meta
Normal file
8
Assets/Scripts/Character/Enemy.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5665d6cc085acce42bfd3d0c921f7718
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
14
Assets/Scripts/Character/Enemy/EnemyAnimatorStateAttack.cs
Normal file
14
Assets/Scripts/Character/Enemy/EnemyAnimatorStateAttack.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class EnemyAnimatorStateAttack : StateMachineBehaviour
|
||||||
|
{
|
||||||
|
// OnStateExit is called when a transition ends and the state machine finishes evaluating this state
|
||||||
|
// override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
|
||||||
|
// {
|
||||||
|
// animator.gameObject.GetComponent<EnemyController>().SetState(EnemyState.Trace);
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a5765847dbef51e4f9bccde712eeda30
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
42
Assets/Scripts/Character/Enemy/EnemyAttackController.cs
Normal file
42
Assets/Scripts/Character/Enemy/EnemyAttackController.cs
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class EnemyAttackController : MonoBehaviour
|
||||||
|
{
|
||||||
|
[Header("각종 전조 오브젝트")]
|
||||||
|
[SerializeField] private GameObject verticalWarningArea;
|
||||||
|
[SerializeField] private GameObject horizontalWarningArea;
|
||||||
|
[SerializeField] private GameObject chariotWarningArea;
|
||||||
|
[SerializeField] private GameObject dynamoWarningArea;
|
||||||
|
|
||||||
|
// 배열에 담아서 관리
|
||||||
|
private List<GameObject> warningAreas;
|
||||||
|
private GameObject _activeArea;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
warningAreas = new List<GameObject>()
|
||||||
|
{
|
||||||
|
verticalWarningArea,
|
||||||
|
horizontalWarningArea,
|
||||||
|
chariotWarningArea,
|
||||||
|
dynamoWarningArea
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// 랜덤 전조 호출
|
||||||
|
public void TriggerRandomWarning(Vector3 spawnPosition, Quaternion spawnRotation)
|
||||||
|
{
|
||||||
|
// 0 ~ Count-1 사이 랜덤 인덱스
|
||||||
|
int idx = Random.Range(0, warningAreas.Count);
|
||||||
|
GameObject selected = warningAreas[idx];
|
||||||
|
|
||||||
|
// 예시: Instantiate 방식으로 화면에 띄우기
|
||||||
|
_activeArea = Instantiate(selected, spawnPosition, spawnRotation);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DestroyWarningArea()
|
||||||
|
{
|
||||||
|
Destroy(_activeArea);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6423b2bcccf1448ca438a8e82a79a4cb
|
||||||
|
timeCreated: 1745149371
|
111
Assets/Scripts/Character/Enemy/EnemyController.cs
Normal file
111
Assets/Scripts/Character/Enemy/EnemyController.cs
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.AI;
|
||||||
|
|
||||||
|
public enum EnemyState { None, Idle, Trace, Attack, GetHit, Move, Dead }
|
||||||
|
|
||||||
|
[RequireComponent(typeof(NavMeshAgent))]
|
||||||
|
[RequireComponent(typeof(Animator))]
|
||||||
|
[RequireComponent(typeof(EnemyAttackController))]
|
||||||
|
public abstract class EnemyController : CharacterBase
|
||||||
|
{
|
||||||
|
[Header("AI")]
|
||||||
|
[SerializeField] private float detectCircleRadius = 10f; // 플레이어 탐지 범위
|
||||||
|
[SerializeField] private LayerMask targetLayerMask; // 플레이어 레이어 마스크
|
||||||
|
|
||||||
|
public NavMeshAgent Agent { get; private set; }
|
||||||
|
public Animator EnemyAnimator { get; private set; }
|
||||||
|
|
||||||
|
public EnemyState CurrentState {get; private set;}
|
||||||
|
|
||||||
|
public EnemyAttackController EnemyAttackController { get; private set; }
|
||||||
|
|
||||||
|
public float WalkSpeed => walkSpeed;
|
||||||
|
public float RunSpeed => runSpeed;
|
||||||
|
|
||||||
|
public Transform TraceTargetTransform { get; private set; }
|
||||||
|
|
||||||
|
[SerializeField] private float walkSpeed = 5;
|
||||||
|
[SerializeField] private float runSpeed = 8;
|
||||||
|
|
||||||
|
|
||||||
|
// -----
|
||||||
|
// 상태 변수
|
||||||
|
private EnemyStateIdle _enemyStateIdle;
|
||||||
|
private EnemyStateTrace _enemyStateTrace;
|
||||||
|
private EnemyStateAttack _enemyStateAttack;
|
||||||
|
private EnemyStateGetHit _enemyStateGetHit;
|
||||||
|
private EnemyStateDead _enemyStateDead;
|
||||||
|
private EnemyStateMove _enemyStateMove;
|
||||||
|
|
||||||
|
private Dictionary<EnemyState, IEnemyState> _enemyStates;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
EnemyAnimator = GetComponent<Animator>();
|
||||||
|
Agent = GetComponent<NavMeshAgent>();
|
||||||
|
EnemyAttackController = GetComponent<EnemyAttackController>();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Start()
|
||||||
|
{
|
||||||
|
base.Start();
|
||||||
|
|
||||||
|
// 상태 객체 생성
|
||||||
|
_enemyStateIdle = new EnemyStateIdle();
|
||||||
|
_enemyStateTrace = new EnemyStateTrace();
|
||||||
|
_enemyStateAttack = new EnemyStateAttack();
|
||||||
|
_enemyStateGetHit = new EnemyStateGetHit();
|
||||||
|
_enemyStateDead = new EnemyStateDead();
|
||||||
|
_enemyStateMove = new EnemyStateMove();
|
||||||
|
|
||||||
|
_enemyStates = new Dictionary<EnemyState, IEnemyState>
|
||||||
|
{
|
||||||
|
{ EnemyState.Idle, _enemyStateIdle },
|
||||||
|
{ EnemyState.Trace, _enemyStateTrace },
|
||||||
|
{ EnemyState.Attack, _enemyStateAttack },
|
||||||
|
{ EnemyState.GetHit, _enemyStateGetHit },
|
||||||
|
{ EnemyState.Dead, _enemyStateDead },
|
||||||
|
{ EnemyState.Move, _enemyStateMove}
|
||||||
|
};
|
||||||
|
|
||||||
|
SetState(EnemyState.Idle);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (CurrentState != EnemyState.None)
|
||||||
|
{
|
||||||
|
_enemyStates[CurrentState].Update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetState(EnemyState newState)
|
||||||
|
{
|
||||||
|
if (CurrentState != EnemyState.None)
|
||||||
|
{
|
||||||
|
_enemyStates[CurrentState].Exit();
|
||||||
|
}
|
||||||
|
CurrentState = newState;
|
||||||
|
_enemyStates[CurrentState].Enter(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 적 탐지
|
||||||
|
|
||||||
|
// 일정 반경에 플레이어가 진입하면 플레이어 소리를 감지했다고 판단
|
||||||
|
public Transform DetectPlayerInCircle()
|
||||||
|
{
|
||||||
|
var hitColliders = Physics.OverlapSphere(transform.position,
|
||||||
|
detectCircleRadius, targetLayerMask);
|
||||||
|
if (hitColliders.Length > 0)
|
||||||
|
{
|
||||||
|
TraceTargetTransform = hitColliders[0].transform;
|
||||||
|
return TraceTargetTransform;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
|
|
3
Assets/Scripts/Character/Enemy/EnemyController.cs.meta
Normal file
3
Assets/Scripts/Character/Enemy/EnemyController.cs.meta
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 137423ca7381405581ab4e95d0e272da
|
||||||
|
timeCreated: 1744796946
|
8
Assets/Scripts/Character/Enemy/EnemyState.meta
Normal file
8
Assets/Scripts/Character/Enemy/EnemyState.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 63a5cd5bb2e90b54192be930aad261db
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -0,0 +1,68 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class EnemyStateAttack : IEnemyState
|
||||||
|
{
|
||||||
|
private static readonly int VertiSlash = Animator.StringToHash("VertiSlash");
|
||||||
|
private static readonly int VertiAttack = Animator.StringToHash("VertiAttack");
|
||||||
|
|
||||||
|
private EnemyController _enemyController;
|
||||||
|
private Animator _animator;
|
||||||
|
private Coroutine _attackRoutine;
|
||||||
|
private EnemyAttackController _enemyAttackController;
|
||||||
|
private enum AttackType
|
||||||
|
{
|
||||||
|
VerticalAttack, // 위에서 아래로 베는 것
|
||||||
|
HorizontalAttack, // 옆으로 베는 것
|
||||||
|
ChariotAttack, // 원형
|
||||||
|
DynamoAttack, // 도넛
|
||||||
|
};
|
||||||
|
|
||||||
|
private AttackType _currentAttackType;
|
||||||
|
|
||||||
|
public void Enter(EnemyController enemyController)
|
||||||
|
{
|
||||||
|
_enemyController = enemyController;
|
||||||
|
_animator = _enemyController.EnemyAnimator;
|
||||||
|
_enemyAttackController = _enemyController.EnemyAttackController;
|
||||||
|
_animator.SetBool(VertiAttack, true);
|
||||||
|
_attackRoutine = _enemyController.StartCoroutine(VerticalAttackSequence());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerator VerticalAttackSequence()
|
||||||
|
{
|
||||||
|
// 1. 전조 이펙트 생성
|
||||||
|
_enemyAttackController.TriggerRandomWarning(_enemyController.transform.position, _enemyController.transform.rotation);
|
||||||
|
// 2. 검을 들어올림
|
||||||
|
yield return new WaitForSeconds(3f);
|
||||||
|
|
||||||
|
// 3. 대기(전조와 검 들어올리는 애니메이션을 위함)
|
||||||
|
|
||||||
|
// 4. 검 휘두르기
|
||||||
|
_animator.SetTrigger(VertiSlash);
|
||||||
|
_enemyAttackController.DestroyWarningArea();
|
||||||
|
// TODO : 5. 공격 판정 발생
|
||||||
|
|
||||||
|
yield return new WaitForSeconds(1f);
|
||||||
|
// 6. 애니메이션 트리거 종료 -> 애니메이터 상태 머신으로 처리
|
||||||
|
_enemyController.SetState(EnemyState.Trace);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Exit()
|
||||||
|
{
|
||||||
|
if (_attackRoutine != null)
|
||||||
|
{
|
||||||
|
_enemyController.StopCoroutine(_attackRoutine);
|
||||||
|
_attackRoutine = null;
|
||||||
|
}
|
||||||
|
_animator.SetBool(VertiAttack, false);
|
||||||
|
_animator = null;
|
||||||
|
_enemyAttackController = null;
|
||||||
|
_enemyController = null;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 29b87c92807e4f6b94c8a08ccc510321
|
||||||
|
timeCreated: 1744799701
|
20
Assets/Scripts/Character/Enemy/EnemyState/EnemyStateDead.cs
Normal file
20
Assets/Scripts/Character/Enemy/EnemyState/EnemyStateDead.cs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
public class EnemyStateDead : IEnemyState
|
||||||
|
{
|
||||||
|
private EnemyController _enemyController;
|
||||||
|
|
||||||
|
public void Enter(EnemyController enemyController)
|
||||||
|
{
|
||||||
|
_enemyController = enemyController;
|
||||||
|
_enemyController.EnemyAnimator.SetTrigger("Dead");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Exit()
|
||||||
|
{
|
||||||
|
_enemyController = null;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4846f061be91409096d5517aa2c692fa
|
||||||
|
timeCreated: 1744799618
|
@ -0,0 +1,19 @@
|
|||||||
|
public class EnemyStateGetHit: IEnemyState
|
||||||
|
{
|
||||||
|
private EnemyController _enemyController;
|
||||||
|
|
||||||
|
public void Enter(EnemyController enemyController)
|
||||||
|
{
|
||||||
|
_enemyController = enemyController;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Exit()
|
||||||
|
{
|
||||||
|
_enemyController = null;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7067b1b0eacf490c863a4cb68c290d3a
|
||||||
|
timeCreated: 1744799049
|
28
Assets/Scripts/Character/Enemy/EnemyState/EnemyStateIdle.cs
Normal file
28
Assets/Scripts/Character/Enemy/EnemyState/EnemyStateIdle.cs
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class EnemyStateIdle: IEnemyState
|
||||||
|
{
|
||||||
|
private static readonly int Idle = Animator.StringToHash("Idle");
|
||||||
|
private EnemyController _enemyController;
|
||||||
|
|
||||||
|
public void Enter(EnemyController enemyController)
|
||||||
|
{
|
||||||
|
_enemyController = enemyController;
|
||||||
|
_enemyController.EnemyAnimator.SetBool(Idle, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update()
|
||||||
|
{
|
||||||
|
var detectPlayerTransform = _enemyController.DetectPlayerInCircle();
|
||||||
|
if (detectPlayerTransform)
|
||||||
|
{
|
||||||
|
_enemyController.SetState(EnemyState.Trace);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Exit()
|
||||||
|
{
|
||||||
|
_enemyController.EnemyAnimator.SetBool(Idle, false);
|
||||||
|
_enemyController = null;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: df3f42dea99a423b8e2ec18e07e58767
|
||||||
|
timeCreated: 1744799656
|
19
Assets/Scripts/Character/Enemy/EnemyState/EnemyStateMove.cs
Normal file
19
Assets/Scripts/Character/Enemy/EnemyState/EnemyStateMove.cs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
public class EnemyStateMove : IEnemyState
|
||||||
|
{
|
||||||
|
private EnemyController _enemyController;
|
||||||
|
|
||||||
|
public void Enter(EnemyController enemyController)
|
||||||
|
{
|
||||||
|
_enemyController = enemyController;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Exit()
|
||||||
|
{
|
||||||
|
_enemyController = null;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5abb29c9137942fe95bc66670d8ef521
|
||||||
|
timeCreated: 1744799142
|
129
Assets/Scripts/Character/Enemy/EnemyState/EnemyStateTrace.cs
Normal file
129
Assets/Scripts/Character/Enemy/EnemyState/EnemyStateTrace.cs
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class EnemyStateTrace : IEnemyState
|
||||||
|
{
|
||||||
|
private static readonly int MoveSpeed = Animator.StringToHash("MoveSpeed");
|
||||||
|
private static readonly int Trace = Animator.StringToHash("Trace");
|
||||||
|
|
||||||
|
private EnemyController _enemyController;
|
||||||
|
private Transform _detectPlayerTransform;
|
||||||
|
|
||||||
|
private const float MaxDetectPlayerInCircleWaitTime = 0.2f;
|
||||||
|
private float _detectPlayerInCircleWaitTime = 0f;
|
||||||
|
|
||||||
|
public void Enter(EnemyController enemyController)
|
||||||
|
{
|
||||||
|
_enemyController = enemyController;
|
||||||
|
|
||||||
|
_detectPlayerTransform = _enemyController.TraceTargetTransform;
|
||||||
|
if (!_detectPlayerTransform)
|
||||||
|
{
|
||||||
|
_enemyController.SetState(EnemyState.Idle);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_enemyController.Agent.enabled == true)
|
||||||
|
{
|
||||||
|
_enemyController.Agent.isStopped = false;
|
||||||
|
_enemyController.Agent.SetDestination(_detectPlayerTransform.position);
|
||||||
|
}
|
||||||
|
|
||||||
|
_enemyController.EnemyAnimator.SetBool(Trace, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update()
|
||||||
|
{
|
||||||
|
// 일정 주기로 찾은 플레이어의 위치를 갱신해서 갱신된 위치로 이동
|
||||||
|
FindTargetPosition();
|
||||||
|
|
||||||
|
PlayerTracking();
|
||||||
|
|
||||||
|
if (_enemyController.Agent.remainingDistance <= _enemyController.Agent.stoppingDistance)
|
||||||
|
{
|
||||||
|
// TODO: 타겟에 도착함 -> 공격 준비
|
||||||
|
_enemyController.SetState(EnemyState.Attack);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void FindTargetPosition()
|
||||||
|
{
|
||||||
|
if (_detectPlayerInCircleWaitTime > MaxDetectPlayerInCircleWaitTime)
|
||||||
|
{
|
||||||
|
// 방향 계산
|
||||||
|
Vector3 dirToPlayer = (_detectPlayerTransform.position - _enemyController.transform.position).normalized;
|
||||||
|
|
||||||
|
// 플레이어 방향으로 offset 적용 (예: 1.5m 앞)
|
||||||
|
Vector3 stopOffset = _detectPlayerTransform.position - dirToPlayer * 1.5f;
|
||||||
|
|
||||||
|
// 목적지 설정
|
||||||
|
_enemyController.Agent.SetDestination(stopOffset);
|
||||||
|
_detectPlayerInCircleWaitTime = 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
_detectPlayerInCircleWaitTime += Time.deltaTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 플레이어를 추적하는 속도를 제어하는 함수
|
||||||
|
private void PlayerTracking()
|
||||||
|
{
|
||||||
|
float distance = (_detectPlayerTransform.position - _enemyController.transform.position).magnitude;
|
||||||
|
|
||||||
|
if (distance > 5f)
|
||||||
|
{
|
||||||
|
// 먼 거리: 뛰기
|
||||||
|
_enemyController.Agent.speed = _enemyController.RunSpeed;
|
||||||
|
_enemyController.Agent.acceleration = 20f;
|
||||||
|
_enemyController.Agent.angularSpeed = 270f;
|
||||||
|
// _enemyController.EnemyAnimator.SetFloat("MoveSpeed", 1f); // 애니메이션도 Run으로
|
||||||
|
|
||||||
|
// NavMeshAgent 회전에 맡기기
|
||||||
|
_enemyController.Agent.updateRotation = true;
|
||||||
|
}
|
||||||
|
else if (distance > 2f)
|
||||||
|
{
|
||||||
|
// 가까운 거리: 걷기
|
||||||
|
_enemyController.Agent.speed = _enemyController.WalkSpeed;
|
||||||
|
_enemyController.Agent.acceleration = 8f;
|
||||||
|
_enemyController.Agent.angularSpeed = 720f;
|
||||||
|
// _enemyController.EnemyAnimator.SetFloat("MoveSpeed", 0.4f); // Walk 애니메이션
|
||||||
|
|
||||||
|
_enemyController.Agent.updateRotation = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 매우 가까움: 직접 타겟 바라보기
|
||||||
|
_enemyController.Agent.updateRotation = false;
|
||||||
|
|
||||||
|
Vector3 direction = _detectPlayerTransform.position - _enemyController.transform.position;
|
||||||
|
direction.y = 0f; // 수직 회전 방지
|
||||||
|
|
||||||
|
if (direction.sqrMagnitude > 0.01f)
|
||||||
|
{
|
||||||
|
Quaternion lookRotation = Quaternion.LookRotation(direction);
|
||||||
|
_enemyController.transform.rotation = Quaternion.Slerp(
|
||||||
|
_enemyController.transform.rotation,
|
||||||
|
lookRotation,
|
||||||
|
Time.deltaTime * 10f // 회전 속도
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// _enemyController.Agent.angularSpeed = 1080f;
|
||||||
|
// _enemyController.Agent.acceleration = 999f;
|
||||||
|
|
||||||
|
// _enemyController.EnemyAnimator.SetFloat("MoveSpeed", 0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 실제 속도 기반으로 애니메이션 제어
|
||||||
|
float currentSpeed = _enemyController.Agent.velocity.magnitude;
|
||||||
|
_enemyController.EnemyAnimator.SetFloat(MoveSpeed, currentSpeed);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Exit()
|
||||||
|
{
|
||||||
|
_detectPlayerTransform = null;
|
||||||
|
_enemyController.EnemyAnimator.SetBool(Trace, false);
|
||||||
|
_enemyController = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d49fe89f824544eebeb0ad8e364e33d4
|
||||||
|
timeCreated: 1744797593
|
6
Assets/Scripts/Character/Enemy/EnemyState/IEnemyState.cs
Normal file
6
Assets/Scripts/Character/Enemy/EnemyState/IEnemyState.cs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
public interface IEnemyState
|
||||||
|
{
|
||||||
|
void Enter(EnemyController enemyController);
|
||||||
|
void Update();
|
||||||
|
void Exit();
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 418026380ec247acaf9ff06190d2fbf2
|
||||||
|
timeCreated: 1744796715
|
7
Assets/Scripts/Character/Enemy/PldDogController.cs
Normal file
7
Assets/Scripts/Character/Enemy/PldDogController.cs
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class PldDogController : EnemyController
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
11
Assets/Scripts/Character/Enemy/PldDogController.cs.meta
Normal file
11
Assets/Scripts/Character/Enemy/PldDogController.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 10f85207f9bd92647b5c38d8a408f024
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -1,8 +1,8 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 6019f1b4a095b0b4396f5561a51fee89
|
guid: 68de4930eebde9e479eaab7c237d2746
|
||||||
timeCreated: 1544605028
|
|
||||||
licenseType: Store
|
|
||||||
NativeFormatImporter:
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: eccbae3cfc77ad245ade46e143aa3200
|
guid: ff79b845bee80594a98ec31de14b5ecd
|
||||||
timeCreated: 1544605040
|
|
||||||
licenseType: Store
|
|
||||||
NativeFormatImporter:
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: cf357b5409b4ad54a82c45d7684564e1
|
guid: 5b0776984ffd79842a0465fb8a419441
|
||||||
timeCreated: 1544607741
|
|
||||||
licenseType: Store
|
|
||||||
NativeFormatImporter:
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 5d190d8211c88a64281f7b90c69f3eb3
|
guid: cef708be761542448b42d1f5e4d1d5e6
|
||||||
timeCreated: 1544605073
|
|
||||||
licenseType: Store
|
|
||||||
NativeFormatImporter:
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
||||||
|
BIN
Assets/StoreAssets/DogKnight/Animations/DieRecover.anim
(Stored with Git LFS)
BIN
Assets/StoreAssets/DogKnight/Animations/DieRecover.anim
(Stored with Git LFS)
Binary file not shown.
@ -1,8 +1,8 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 4a3671dbe6670524b8b6d9ad3664c179
|
guid: 7e5e21c2814211745a93c59b744df10e
|
||||||
timeCreated: 1544607752
|
|
||||||
licenseType: Store
|
|
||||||
NativeFormatImporter:
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 30d4fe7af77240a44b9354aaed8e5beb
|
guid: 6295306c82f8e6b49938378b3666db48
|
||||||
timeCreated: 1544607757
|
|
||||||
licenseType: Store
|
|
||||||
NativeFormatImporter:
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user