diff --git a/Assets/ResWork/Prefabs/Indicator/Indicator.mat b/Assets/ResWork/Prefabs/Indicator/Indicator.mat index db554b4e2..dccf1a28d 100644 --- a/Assets/ResWork/Prefabs/Indicator/Indicator.mat +++ b/Assets/ResWork/Prefabs/Indicator/Indicator.mat @@ -1,5 +1,18 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!114 &-5592938566756686957 +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: + version: 7 --- !u!21 &2100000 Material: serializedVersion: 8 @@ -8,7 +21,7 @@ Material: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Indicator - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Shader: {fileID: 4800000, guid: 650dd9526735d5b46b79224bc6e94025, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 m_ValidKeywords: [] @@ -17,12 +30,17 @@ Material: m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 - stringTagMap: {} + stringTagMap: + RenderType: Opaque disabledShaderPasses: [] m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: + - _BaseMap: + 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} @@ -61,10 +79,16 @@ Material: m_Offset: {x: 0, y: 0} m_Ints: [] m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendOp: 0 - _BumpScale: 1 + - _Cull: 2 - _Cutoff: 0.5 - _DetailNormalMapScale: 1 - _DstBlend: 0 + - _DstBlendAlpha: 0 - _GlossMapScale: 1 - _Glossiness: 0.5 - _GlossyReflections: 1 @@ -72,12 +96,17 @@ Material: - _Mode: 0 - _OcclusionStrength: 1 - _Parallax: 0.02 + - _QueueOffset: 0 + - _SampleGI: 0 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 - _UVSec: 0 - _ZWrite: 1 m_Colors: + - _BaseColor: {r: 1, g: 0, b: 0, a: 1} - _Color: {r: 1, g: 0, b: 0, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} m_BuildTextureStacks: [] diff --git a/Assets/Res_Addr/Mobs/FieldBoss/Mega_Ice_Golem.prefab b/Assets/Res_Addr/Mobs/FieldBoss/Mega_Ice_Golem.prefab index ec020cb97..1fe67de0f 100644 --- a/Assets/Res_Addr/Mobs/FieldBoss/Mega_Ice_Golem.prefab +++ b/Assets/Res_Addr/Mobs/FieldBoss/Mega_Ice_Golem.prefab @@ -506,7 +506,13 @@ MonoBehaviour: MagicID: 0 HealCount: 0 HealRate: 0.1 - list_indicator: [] + list_indicator: + - {fileID: 0} + Skill1CoolTime: 8 + Skill1TargetRange: 2 + Skill1Speed: 5 + Skill1Dmg: 3.5 + Skill1StunTime: 2 --- !u!95 &6834610517749107232 Animator: serializedVersion: 5 diff --git a/Assets/Res_Addr/Obj/IceGolem_Skill1_Indicator.prefab b/Assets/Res_Addr/Obj/IceGolem_Skill1_Indicator.prefab new file mode 100644 index 000000000..d7c552ffc --- /dev/null +++ b/Assets/Res_Addr/Obj/IceGolem_Skill1_Indicator.prefab @@ -0,0 +1,117 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &821061129531636761 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2201136656505196193} + m_Layer: 3 + m_Name: IceGolem_Skill1_Indicator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2201136656505196193 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 821061129531636761} + 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: + - {fileID: 6375824511339138443} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5389208046211158943 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6375824511339138443} + - component: {fileID: 292154521008100957} + - component: {fileID: 3775451288762826441} + m_Layer: 3 + m_Name: Indicator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6375824511339138443 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5389208046211158943} + serializedVersion: 2 + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 8, y: 8, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2201136656505196193} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &292154521008100957 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5389208046211158943} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &3775451288762826441 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5389208046211158943} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 3e1c80888ebc582469572ddac13cc967, 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 + m_AdditionalVertexStreams: {fileID: 0} diff --git a/Assets/Res_Addr/Obj/IceGolem_Skill1_Indicator.prefab.meta b/Assets/Res_Addr/Obj/IceGolem_Skill1_Indicator.prefab.meta new file mode 100644 index 000000000..34501859a --- /dev/null +++ b/Assets/Res_Addr/Obj/IceGolem_Skill1_Indicator.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ab011634068792743ba1b8f8659324c1 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/Character/Mob/Boss/Boss_IceGolem.cs b/Assets/Script/Character/Mob/Boss/Boss_IceGolem.cs index 4fb905e0f..ed605960d 100644 --- a/Assets/Script/Character/Mob/Boss/Boss_IceGolem.cs +++ b/Assets/Script/Character/Mob/Boss/Boss_IceGolem.cs @@ -12,13 +12,22 @@ public class Boss_IceGolem : BossMobActor public float Skill1Dmg = 3.5f; [Header("스킬1 스턴 시간")] public float Skill1StunTime = 2f; + [Header("스킬1 인디케이터")] + public string Skill1Indicator = "IceGolem_Skill1_Indicator"; - float m_skill1cooltime; + float m_skill1cooltime = 1f; + + public override void Set(bool isEnemy, Actor owner, ServerData sdata, int _id, bool _stop, bool _ui = false) + { + base.Set(isEnemy, owner, sdata, _id, _stop, _ui); + if (DSUtil.CheckNull(go_indicator1)) + IndicatorInfo.Ins.Make_Indicator(Skill1Indicator, go => { go_indicator1 = go; }); + } protected override void Update() { base.Update(); - if (IsDead()) return; + if (IsDead() || IsStop) return; //if (CanUseSkill1) { @@ -29,8 +38,11 @@ public class Boss_IceGolem : BossMobActor Run_byUseSkill(Skill1TargetRange, Skill1Speed, success => { AnimationPlay("boss_skill1start"); + go_indicator1.transform.position = Get_position(); + go_indicator1.SetActive(true); Jump(0.5f, 3f, 2f, 5f, () => { + go_indicator1.SetActive(false); AnimationPlay("boss_skill1attack"); Change_MobStatus(eMobStatus.Attack); }); diff --git a/Assets/Script/Character/Mob/BossMobActor.cs b/Assets/Script/Character/Mob/BossMobActor.cs index 12209e41f..1616d06e9 100644 --- a/Assets/Script/Character/Mob/BossMobActor.cs +++ b/Assets/Script/Character/Mob/BossMobActor.cs @@ -1,71 +1,29 @@ using System; using System.Collections; -using System.Collections.Generic; using UnityEngine; public class BossMobActor : MobActor { - public List list_indicator; - + protected GameObject go_indicator1, go_indicator2; protected bool CanUseSkill1, CanUseSkill2; protected float CoolTime_Skill1, CoolTime_Skill2; - int m_attackIndex = 0, m_maxAttackIndex; - float m_attackspeed; - - protected override void Awake() - { - base.Awake(); - Init(); - } - - void Init() - { - list_indicator.ForEach(f => f.SetActive(false)); - } - protected override void Update() { base.Update(); - if (IsDead()) return; + if (IsDead() || IsStop) return; + } + + void Init() + { + if (!DSUtil.CheckNull(go_indicator1)) go_indicator1.SetActive(false); + if (!DSUtil.CheckNull(go_indicator2)) go_indicator2.SetActive(false); } public override void Del_Target(bool forcedel = false) { base.Del_Target(forcedel); - if (!isTarget) Init(); - } - - public override void Indicator(int a) - { - base.Indicator(a); - var index = 0; - if (isPlaying(eAnim.Attack2)) index = 1; - else if (isPlaying(eAnim.Attack3)) index = 2; - list_indicator[index].SetActive(a == 0); - - if (a == 1) - { // 데미지 투사체 생성 - m_animation.speed = m_attackspeed; - - var startpos = Get_CenterPositionFoward(); - if (ProjectileInfo.ProjectileInfoOn) - { - if (index == 0) - ProjectileInfo.Ins.Shoot_Projectile(m_MonsterTableData.s_Porjectile1, this, m_Target, 1f, startpos, m_MonsterTableData.f_ProjectileLifeTime1); - else if (index == 1) - ProjectileInfo.Ins.Shoot_Projectile(m_MonsterTableData.s_Porjectile2, this, m_Target, 1f, startpos, m_MonsterTableData.f_ProjectileLifeTime2); - else - ProjectileInfo.Ins.Shoot_Projectile(m_MonsterTableData.s_Porjectile3, this, m_Target, 1f, startpos, m_MonsterTableData.f_ProjectileLifeTime3); - } - - Set_Coroutine_withCancel(() => - { - Change_MobStatus(eMobStatus.PatrolWait); - ++m_attackIndex; - if (m_attackIndex >= m_maxAttackIndex) m_attackIndex = 0; - }, 0.95f - m_animation.GetCurrentAnimatorStateInfo(0).normalizedTime); - } + Init(); } public override void Get_Damage(DamageInfo _dinfo) diff --git a/Assets/Script/Ingame/Obj/IndicatorInfo.cs b/Assets/Script/Ingame/Obj/IndicatorInfo.cs new file mode 100644 index 000000000..3ad3ab677 --- /dev/null +++ b/Assets/Script/Ingame/Obj/IndicatorInfo.cs @@ -0,0 +1,23 @@ +using System; +using UnityEngine; + +public class IndicatorInfo : MonoBehaviourSingletonTemplate +{ + [RuntimeInitializeOnLoadMethod] + static void OnRuntimeMethodLoad() + { + var go = new GameObject("IndicatorInfo").AddComponent(); + DontDestroyOnLoad(go.gameObject); + } + + public void Make_Indicator(string indicatorName, Action action) + { + AddrResourceMgr.Ins.LoadObject($"Assets/Res_Addr/Obj/{indicatorName}.prefab", handle => + { + var go = DSUtil.Get_Clone(handle.Result); + go.transform.parent = transform; + AddrResourceMgr.Ins.Set_AddressableReleaseSelf(go); + action(go); + }); + } +} \ No newline at end of file diff --git a/Assets/Script/Ingame/Obj/IndicatorInfo.cs.meta b/Assets/Script/Ingame/Obj/IndicatorInfo.cs.meta new file mode 100644 index 000000000..aad0f07d7 --- /dev/null +++ b/Assets/Script/Ingame/Obj/IndicatorInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9ef6ec5366532e846b0d271469dcc24e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: