아이스 골렘 스킬2 인디케이터 추가
This commit is contained in:
parent
43470cdd2b
commit
a307526213
|
|
@ -309,7 +309,7 @@ AnimatorState:
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_Name: boss_skill2runattack
|
m_Name: boss_skill2runattack
|
||||||
m_Speed: 1
|
m_Speed: 5
|
||||||
m_CycleOffset: 0
|
m_CycleOffset: 0
|
||||||
m_Transitions: []
|
m_Transitions: []
|
||||||
m_StateMachineBehaviours: []
|
m_StateMachineBehaviours: []
|
||||||
|
|
|
||||||
|
|
@ -506,13 +506,19 @@ MonoBehaviour:
|
||||||
MagicID: 0
|
MagicID: 0
|
||||||
HealCount: 0
|
HealCount: 0
|
||||||
HealRate: 0.1
|
HealRate: 0.1
|
||||||
list_indicator:
|
|
||||||
- {fileID: 0}
|
|
||||||
Skill1CoolTime: 8
|
Skill1CoolTime: 8
|
||||||
Skill1TargetRange: 2
|
Skill1TargetRange: 2
|
||||||
Skill1Speed: 5
|
Skill1Speed: 5
|
||||||
Skill1Dmg: 3.5
|
Skill1Dmg: 3.5
|
||||||
Skill1StunTime: 2
|
Skill1StunTime: 2
|
||||||
|
Skill1Indicator: IceGolem_Skill1_Indicator
|
||||||
|
bbbbbbbbbbbbbbbbbbbbbbbb: 0
|
||||||
|
Skill2CoolTime: 10
|
||||||
|
Skill2Speed: 7
|
||||||
|
Skill2Dmg: 3.5
|
||||||
|
Skill2KnockBackTime: 0.3
|
||||||
|
Skill2StunTime: 2
|
||||||
|
Skill2Indicator: IceGolem_Skill2_Indicator
|
||||||
--- !u!95 &6834610517749107232
|
--- !u!95 &6834610517749107232
|
||||||
Animator:
|
Animator:
|
||||||
serializedVersion: 5
|
serializedVersion: 5
|
||||||
|
|
|
||||||
|
|
@ -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_Skill2_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: 9}
|
||||||
|
m_LocalScale: {x: 1.8, y: 18, z: 0.5}
|
||||||
|
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}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4edacb45629b78049b35815b07cd2d99
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
|
|
@ -20,7 +21,7 @@ public class Boss_IceGolem : BossMobActor
|
||||||
[Header("스킬2 쿨타임")]
|
[Header("스킬2 쿨타임")]
|
||||||
public float Skill2CoolTime = 10f;
|
public float Skill2CoolTime = 10f;
|
||||||
[Header("스킬2 달려가는 속도")]
|
[Header("스킬2 달려가는 속도")]
|
||||||
public float Skill2Speed = 5f;
|
public float Skill2Speed = 7f;
|
||||||
[Header("스킬2 데미지")]
|
[Header("스킬2 데미지")]
|
||||||
public float Skill2Dmg = 3.5f;
|
public float Skill2Dmg = 3.5f;
|
||||||
[Header("스킬2 넉백 시간")]
|
[Header("스킬2 넉백 시간")]
|
||||||
|
|
@ -33,10 +34,8 @@ public class Boss_IceGolem : BossMobActor
|
||||||
public override void Set(bool isEnemy, Actor owner, ServerData sdata, int _id, bool _stop, bool _ui = false)
|
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);
|
base.Set(isEnemy, owner, sdata, _id, _stop, _ui);
|
||||||
if (DSUtil.CheckNull(go_indicator1))
|
if (DSUtil.CheckNull(go_indicator1)) IndicatorInfo.Ins.Make_Indicator(Skill1Indicator, go => { go_indicator1 = go; });
|
||||||
IndicatorInfo.Ins.Make_Indicator(Skill1Indicator, go => { go_indicator1 = go; });
|
if (DSUtil.CheckNull(go_indicator2)) IndicatorInfo.Ins.Make_Indicator(Skill2Indicator, go => { go_indicator2 = go; });
|
||||||
//if (DSUtil.CheckNull(go_indicator2))
|
|
||||||
// IndicatorInfo.Ins.Make_Indicator(Skill2Indicator, go => { go_indicator2 = go; });
|
|
||||||
|
|
||||||
CoolTime_Skill1 = 1f;
|
CoolTime_Skill1 = 1f;
|
||||||
CoolTime_Skill1 = 2f;
|
CoolTime_Skill1 = 2f;
|
||||||
|
|
@ -54,6 +53,8 @@ public class Boss_IceGolem : BossMobActor
|
||||||
base.Update();
|
base.Update();
|
||||||
if (IsDead() || IsStop) return;
|
if (IsDead() || IsStop) return;
|
||||||
|
|
||||||
|
if (isTarget)
|
||||||
|
{
|
||||||
if (UseSkillIndex == 1 && MobStatus != eMobStatus.Skill)
|
if (UseSkillIndex == 1 && MobStatus != eMobStatus.Skill)
|
||||||
{
|
{
|
||||||
Run_byUseSkill(Skill1TargetRange, Skill1Speed, success =>
|
Run_byUseSkill(Skill1TargetRange, Skill1Speed, success =>
|
||||||
|
|
@ -63,6 +64,7 @@ public class Boss_IceGolem : BossMobActor
|
||||||
go_indicator1.SetActive(true);
|
go_indicator1.SetActive(true);
|
||||||
Jump(0.5f, 3f, 2f, 5f, () =>
|
Jump(0.5f, 3f, 2f, 5f, () =>
|
||||||
{
|
{
|
||||||
|
go_indicator1.SetActive(false);
|
||||||
Init(true, false);
|
Init(true, false);
|
||||||
AnimationPlay("boss_skill1attack");
|
AnimationPlay("boss_skill1attack");
|
||||||
});
|
});
|
||||||
|
|
@ -71,23 +73,46 @@ public class Boss_IceGolem : BossMobActor
|
||||||
else if (UseSkillIndex == 2 && MobStatus != eMobStatus.Skill)
|
else if (UseSkillIndex == 2 && MobStatus != eMobStatus.Skill)
|
||||||
StartCoroutine(Co_Skill2());
|
StartCoroutine(Co_Skill2());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
IEnumerator Co_Skill2()
|
IEnumerator Co_Skill2()
|
||||||
{
|
{
|
||||||
Change_MobStatus(eMobStatus.Skill);
|
Change_MobStatus(eMobStatus.Skill);
|
||||||
AnimationPlay("boss_skill2start");
|
AnimationPlay("boss_skill2start");
|
||||||
|
go_indicator2.SetActive(true);
|
||||||
|
go_indicator2.transform.position = Get_position();
|
||||||
|
if (isTarget) go_indicator2.transform.LookAt(m_Target.transform);
|
||||||
|
|
||||||
float t = 0f;
|
float t = 0f;
|
||||||
while (t < 3f)
|
while (t < 3f)
|
||||||
{
|
{
|
||||||
yield return null;
|
yield return null;
|
||||||
t += Time.deltaTime;
|
t += Time.deltaTime;
|
||||||
if (isTarget) transform.LookAt(m_Target.transform);
|
if (isTarget)
|
||||||
|
{
|
||||||
|
transform.LookAt(m_Target.transform);
|
||||||
|
go_indicator2.transform.LookAt(m_Target.transform);
|
||||||
|
}
|
||||||
else break;
|
else break;
|
||||||
}
|
}
|
||||||
|
go_indicator2.SetActive(false);
|
||||||
|
|
||||||
|
if (isTarget)
|
||||||
|
{
|
||||||
AnimationPlay("boss_skill2runattack");
|
AnimationPlay("boss_skill2runattack");
|
||||||
Run_byUseSkill(0f, 7f, success => { Init(false, true); });
|
transform.LookAt(m_Target.transform);
|
||||||
|
m_NavMeshAgent.stoppingDistance = 0.1f;
|
||||||
|
Set_Path(Get_PositionFoward(18f)); // IceGolem_Skill2_Indicator 길이
|
||||||
|
while (!Complete_Destination())
|
||||||
|
{
|
||||||
|
m_NavMeshAgent.speed = Skill2Speed;
|
||||||
|
yield return null;
|
||||||
|
}
|
||||||
|
m_NavMeshAgent.stoppingDistance = m_NavStopDistance;
|
||||||
|
m_NavMeshAgent.speed = Get_MoveSpeed();
|
||||||
|
}
|
||||||
|
|
||||||
|
Init(false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override float Get_Skill1Dmg() { return Skill1Dmg; }
|
protected override float Get_Skill1Dmg() { return Skill1Dmg; }
|
||||||
|
|
|
||||||
|
|
@ -38,16 +38,19 @@ public class BossMobActor : MobActor
|
||||||
|
|
||||||
protected virtual void Init(bool initSkill1CoolTime, bool initSkill2CoolTime)
|
protected virtual void Init(bool initSkill1CoolTime, bool initSkill2CoolTime)
|
||||||
{
|
{
|
||||||
Change_MobStatus(eMobStatus.Attack);
|
Change_MobStatus(isTarget ? eMobStatus.Attack : eMobStatus.PatrolWait);
|
||||||
|
UseSkillIndex = 0;
|
||||||
|
}
|
||||||
|
void InActiveAllIndicator()
|
||||||
|
{
|
||||||
if (!DSUtil.CheckNull(go_indicator1)) go_indicator1.SetActive(false);
|
if (!DSUtil.CheckNull(go_indicator1)) go_indicator1.SetActive(false);
|
||||||
if (!DSUtil.CheckNull(go_indicator2)) go_indicator2.SetActive(false);
|
if (!DSUtil.CheckNull(go_indicator2)) go_indicator2.SetActive(false);
|
||||||
UseSkillIndex = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Del_Target(bool forcedel = false)
|
public override void Del_Target(bool forcedel = false)
|
||||||
{
|
{
|
||||||
base.Del_Target(forcedel);
|
base.Del_Target(forcedel);
|
||||||
Init(false, false);
|
InActiveAllIndicator();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Get_Damage(DamageInfo _dinfo)
|
public override void Get_Damage(DamageInfo _dinfo)
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,7 @@ public class MobActor : Actor
|
||||||
transform.localScale = m_MonsterTableData.f_DefaultScale * Vector3.one;
|
transform.localScale = m_MonsterTableData.f_DefaultScale * Vector3.one;
|
||||||
|
|
||||||
m_AttackType = m_MonsterTableData.e_AttackType;
|
m_AttackType = m_MonsterTableData.e_AttackType;
|
||||||
|
m_NavStopDistance = m_MonsterTableData.f_BaseATKRange;
|
||||||
b_IsFirstAttack = m_MonsterTableData.b_IsFirstAttack;
|
b_IsFirstAttack = m_MonsterTableData.b_IsFirstAttack;
|
||||||
f_BaseChaseRange = m_MonsterTableData.f_BaseChaseRange;
|
f_BaseChaseRange = m_MonsterTableData.f_BaseChaseRange;
|
||||||
|
|
||||||
|
|
@ -190,7 +191,7 @@ public class MobActor : Actor
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!isPlaying(eAnim.Attack, eAnim.Attack2, eAnim.Attack3) && Vector3.Distance(m_Target.Get_position(), Get_position()) > m_MonsterTableData.f_BaseATKRange + 0.5f)
|
if (!isPlaying(eAnim.Attack, eAnim.Attack2, eAnim.Attack3) && Vector3.Distance(m_Target.Get_position(), Get_position()) > m_NavStopDistance)
|
||||||
Change_MobStatus(eMobStatus.Chase);
|
Change_MobStatus(eMobStatus.Chase);
|
||||||
else if (m_attackCoolTime <= 0f)
|
else if (m_attackCoolTime <= 0f)
|
||||||
{
|
{
|
||||||
|
|
@ -274,7 +275,7 @@ public class MobActor : Actor
|
||||||
m_NavMeshAgent.stoppingDistance = 0.1f;
|
m_NavMeshAgent.stoppingDistance = 0.1f;
|
||||||
break;
|
break;
|
||||||
case eMobStatus.Battle:
|
case eMobStatus.Battle:
|
||||||
m_NavMeshAgent.stoppingDistance = m_MonsterTableData.f_BaseATKRange;
|
m_NavMeshAgent.stoppingDistance = m_NavStopDistance;
|
||||||
FindNextTarget(10000f);
|
FindNextTarget(10000f);
|
||||||
break;
|
break;
|
||||||
case eMobStatus.BattleStop:
|
case eMobStatus.BattleStop:
|
||||||
|
|
@ -302,7 +303,7 @@ public class MobActor : Actor
|
||||||
void Check_Patrol()
|
void Check_Patrol()
|
||||||
{
|
{
|
||||||
// 플레이어가 추적 범위 밖으로 나가면 순찰 상태로 전환
|
// 플레이어가 추적 범위 밖으로 나가면 순찰 상태로 전환
|
||||||
if (MobStatus != eMobStatus.PatrolRot && !isPlaying(eAnim.Attack, eAnim.Attack2, eAnim.Attack3) &&
|
if (MobStatus != eMobStatus.PatrolRot && !isPlaying(eAnim.Attack, eAnim.Skill) &&
|
||||||
(!isTarget || Vector3.Distance(OriginalPos, Get_position()) > m_MonsterTableData.f_BaseChaseRange))
|
(!isTarget || Vector3.Distance(OriginalPos, Get_position()) > m_MonsterTableData.f_BaseChaseRange))
|
||||||
Change_MobStatus(eMobStatus.BattleStop);
|
Change_MobStatus(eMobStatus.BattleStop);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue