몬스터 스테이지 추가 스탯 적용

This commit is contained in:
Ino 2026-01-14 08:57:21 +09:00
parent 1561b52fe1
commit 2948b187a3
6 changed files with 20 additions and 22 deletions

View File

@ -1,10 +1,9 @@
테이블 연결 타이머 적용
- 스테이지 - 시간 다 되면 패배
- 웨이브 승리 화면
- 몬스터 경험치 획득
- 유닛 레벨 업 및 스킬 선택
- 몬스터 스킬 15종
- 투사체(이펙트)
몬스터 이동방식 구현 몬스터 이동방식 구현
// - 직진 // - 직진

View File

@ -1 +1 @@
[{"n_MonsterTypeID":"2001","e_MonsterType":"Monster","n_DefaultAttack":"10","n_DefaultHp":"40","n_DropExp":"1","e_UnityType":"Melee","f_AttackRange":"1.2","f_AttackDelay":"1.1","f_MoveSpeed":"1","e_MoveType":"Static","n_ProjectileID":"3101","s_MonsterPrefabPath":"2001","f_Scale":"0.15","e_ShieldType":"Rotation","n_NormalShieldCount":"2","n_InvinityShieldCount":"2"},{"n_MonsterTypeID":"2002","e_MonsterType":"Monster","n_DefaultAttack":"20","n_DefaultHp":"60","n_DropExp":"1","e_UnityType":"Range","f_AttackRange":"5","f_AttackDelay":"2","f_MoveSpeed":"1.2","e_MoveType":"Static","n_ProjectileID":"3102","s_MonsterPrefabPath":"2002","f_Scale":"0.15","e_ShieldType":"Rotation","n_NormalShieldCount":"2","n_InvinityShieldCount":"2"},{"n_MonsterTypeID":"2003","e_MonsterType":"Boss","n_DefaultAttack":"30","n_DefaultHp":"60","n_DropExp":"3","e_UnityType":"Melee","f_AttackRange":"2","f_AttackDelay":"1.5","f_MoveSpeed":"1.2","e_MoveType":"Random","n_ProjectileID":"3101","s_MonsterPrefabPath":"2003","f_Scale":"0.3","e_ShieldType":"Rotation","n_NormalShieldCount":"1","n_InvinityShieldCount":"1"},{"n_MonsterTypeID":"2004","e_MonsterType":"Monster","n_DefaultAttack":"10","n_DefaultHp":"40","n_DropExp":"1","e_UnityType":"Melee","f_AttackRange":"1.2","f_AttackDelay":"1.1","f_MoveSpeed":"1","e_MoveType":"Static","n_ProjectileID":"3101","s_MonsterPrefabPath":"2004","f_Scale":"0.15","e_ShieldType":"Rotation","n_NormalShieldCount":"2","n_InvinityShieldCount":"2"},{"n_MonsterTypeID":"2005","e_MonsterType":"Monster","n_DefaultAttack":"20","n_DefaultHp":"60","n_DropExp":"1","e_UnityType":"Range","f_AttackRange":"5","f_AttackDelay":"2","f_MoveSpeed":"1.2","e_MoveType":"Static","n_ProjectileID":"3102","s_MonsterPrefabPath":"2005","f_Scale":"0.15","e_ShieldType":"Rotation","n_NormalShieldCount":"2","n_InvinityShieldCount":"2"},{"n_MonsterTypeID":"2006","e_MonsterType":"Boss","n_DefaultAttack":"30","n_DefaultHp":"60","n_DropExp":"3","e_UnityType":"Range","f_AttackRange":"4.5","f_AttackDelay":"1.5","f_MoveSpeed":"1.2","e_MoveType":"Random","n_ProjectileID":"3102","s_MonsterPrefabPath":"2006","f_Scale":"0.3","e_ShieldType":"Rotation","n_NormalShieldCount":"1","n_InvinityShieldCount":"1"}] [{"n_MonsterTypeID":"2001","e_MonsterType":"Monster","n_DefaultAttack":"10","n_DefaultHp":"40","n_DropExp":"1","e_UnityType":"Melee","f_AttackRange":"1.2","f_AttackDelay":"1.1","f_MoveSpeed":"1","e_MoveType":"Static","n_ProjectileID":"3101","s_MonsterPrefabPath":"2001","f_Scale":"0.15","e_ShieldType":"None","n_NormalShieldCount":"2","n_InvinityShieldCount":"2"},{"n_MonsterTypeID":"2002","e_MonsterType":"Monster","n_DefaultAttack":"20","n_DefaultHp":"60","n_DropExp":"1","e_UnityType":"Range","f_AttackRange":"5","f_AttackDelay":"2","f_MoveSpeed":"1.2","e_MoveType":"Static","n_ProjectileID":"3102","s_MonsterPrefabPath":"2002","f_Scale":"0.15","e_ShieldType":"None","n_NormalShieldCount":"2","n_InvinityShieldCount":"2"},{"n_MonsterTypeID":"2003","e_MonsterType":"Boss","n_DefaultAttack":"30","n_DefaultHp":"60","n_DropExp":"3","e_UnityType":"Melee","f_AttackRange":"2","f_AttackDelay":"1.5","f_MoveSpeed":"1.2","e_MoveType":"Random","n_ProjectileID":"3101","s_MonsterPrefabPath":"2003","f_Scale":"0.3","e_ShieldType":"Rotation","n_NormalShieldCount":"1","n_InvinityShieldCount":"1"},{"n_MonsterTypeID":"2004","e_MonsterType":"Monster","n_DefaultAttack":"10","n_DefaultHp":"40","n_DropExp":"1","e_UnityType":"Melee","f_AttackRange":"1.2","f_AttackDelay":"1.1","f_MoveSpeed":"1","e_MoveType":"Static","n_ProjectileID":"3101","s_MonsterPrefabPath":"2004","f_Scale":"0.15","e_ShieldType":"None","n_NormalShieldCount":"2","n_InvinityShieldCount":"2"},{"n_MonsterTypeID":"2005","e_MonsterType":"Monster","n_DefaultAttack":"20","n_DefaultHp":"60","n_DropExp":"1","e_UnityType":"Range","f_AttackRange":"5","f_AttackDelay":"2","f_MoveSpeed":"1.2","e_MoveType":"Static","n_ProjectileID":"3102","s_MonsterPrefabPath":"2005","f_Scale":"0.15","e_ShieldType":"None","n_NormalShieldCount":"2","n_InvinityShieldCount":"2"},{"n_MonsterTypeID":"2006","e_MonsterType":"Boss","n_DefaultAttack":"30","n_DefaultHp":"60","n_DropExp":"3","e_UnityType":"Range","f_AttackRange":"4.5","f_AttackDelay":"1.5","f_MoveSpeed":"1.2","e_MoveType":"Random","n_ProjectileID":"3102","s_MonsterPrefabPath":"2006","f_Scale":"0.3","e_ShieldType":"Rotation","n_NormalShieldCount":"1","n_InvinityShieldCount":"1"}]

View File

@ -1 +1 @@
[{"n_UnitID":"1001","n_DefaultAttack":"1","n_DefaultHp":"500","f_AttackSpeed":"1.25","n_DefaultProjectileCount":"1","n_ProjectileID":"3001","s_UnitPrefabPath":"DefaultUnit"}] [{"n_UnitID":"1001","n_DefaultAttack":"25","n_DefaultHp":"500","f_AttackSpeed":"1.25","n_DefaultProjectileCount":"1","n_ProjectileID":"3001","s_UnitPrefabPath":"DefaultUnit"}]

View File

@ -36,7 +36,8 @@ public class MobActor : MonoBehaviour
return poolKey; return poolKey;
} }
ObscuredInt _HP; int m_HP { get { return _HP; } set { _HP = value; _HP.RandomizeCryptoKey(); } } ObscuredInt _Attack; public int m_Attack { get { return _Attack; } set { _Attack = value; _Attack.RandomizeCryptoKey(); } }
ObscuredInt _HP; public int m_HP { get { return _HP; } set { _HP = value; _HP.RandomizeCryptoKey(); } }
private void Awake() private void Awake()
{ {
@ -65,7 +66,7 @@ public class MobActor : MonoBehaviour
} }
} }
public void Set(MonsterTableData data, float fenceY) public void Set(bool isboss, MonsterTableData data, float fenceY)
{ {
gameObject.SetActive(true); gameObject.SetActive(true);
if (m_HUD_HP == null) if (m_HUD_HP == null)
@ -75,7 +76,10 @@ public class MobActor : MonoBehaviour
m_Data = data; m_Data = data;
FenceY = fenceY; FenceY = fenceY;
m_attackTimer = m_Data.f_AttackDelay; m_attackTimer = m_Data.f_AttackDelay;
m_HP = m_Data.n_DefaultHp;
var curstagedata = IngameMgr.Ins.Get_CurStageTData();
m_Attack = m_Data.n_DefaultAttack + (isboss ? curstagedata.n_DefaultBossAttack : curstagedata.n_DefaultEnemyAttack);
m_HP = m_Data.n_DefaultHp + (isboss ? curstagedata.n_DefaultBossHp : curstagedata.n_DefaultEnemyHp);
m_HUD_HP.Set(transform, m_HP); m_HUD_HP.Set(transform, m_HP);
m_MobShields.Set(data); m_MobShields.Set(data);
} }
@ -119,7 +123,7 @@ public class MobActor : MonoBehaviour
IsPC = false, IsPC = false,
m_Data = table_projectile.Ins.Get_Data(m_Data.n_ProjectileID), m_Data = table_projectile.Ins.Get_Data(m_Data.n_ProjectileID),
tf_Start = transform, tf_Start = transform,
Dmg = m_Data.n_DefaultAttack Dmg = m_Attack
}); });
} }

View File

@ -97,16 +97,12 @@ public class IngameMgr : MonoBehaviourSingletonTemplate<IngameMgr>
mobid = CurStageData.list_monster_range[Random.Range(0, CurStageData.list_monster_range.Count)]; mobid = CurStageData.list_monster_range[Random.Range(0, CurStageData.list_monster_range.Count)];
} }
var mobdata = table_monster.Ins.Get_Data(mobid); MakeMob(false, table_monster.Ins.Get_Data(mobid));
GetMob(mobdata).Set(mobdata, tf_fence.position.y);
} }
} }
if (CurStageData.dic_boss.ContainsKey(m_Wave)) if (CurStageData.dic_boss.ContainsKey(m_Wave))
{ MakeMob(true, table_monster.Ins.Get_Data(CurStageData.dic_boss[m_Wave]));
var mobdata = table_monster.Ins.Get_Data(CurStageData.dic_boss[m_Wave]);
GetMob(mobdata).Set(mobdata, tf_fence.position.y);
}
yield return new WaitForSeconds(wavedata.f_NextWaveDelay); yield return new WaitForSeconds(wavedata.f_NextWaveDelay);
++m_Wave; ++m_Wave;
@ -114,7 +110,7 @@ public class IngameMgr : MonoBehaviourSingletonTemplate<IngameMgr>
StartCoroutine(Co_MakeMob()); StartCoroutine(Co_MakeMob());
} }
MobActor GetMob(MonsterTableData data) void MakeMob(bool isboss, MonsterTableData data)
{ {
string key = data.s_MonsterPrefabPath; string key = data.s_MonsterPrefabPath;
@ -141,8 +137,7 @@ public class IngameMgr : MonoBehaviourSingletonTemplate<IngameMgr>
mob.transform.SetParent(tfs_mobparent[Random.Range(0, tfs_mobparent.Length)], false); mob.transform.SetParent(tfs_mobparent[Random.Range(0, tfs_mobparent.Length)], false);
mob.transform.localPosition = Vector3.zero; mob.transform.localPosition = Vector3.zero;
mob.transform.localScale = Vector3.one * data.f_Scale; mob.transform.localScale = Vector3.one * data.f_Scale;
mob.Set(data, tf_fence.position.y); mob.Set(isboss,data, tf_fence.position.y);
return mob;
} }
public void Get_Dmg(int dmg) public void Get_Dmg(int dmg)