PreviousArrow
This commit is contained in:
parent
132051f2f7
commit
5875e79ff3
|
|
@ -15,6 +15,7 @@ ArrowLeftRight 투사체에 적이 명중할 경우 좌/우 방향으로 투
|
||||||
ImpactArrow 투사체가 적의 방어막에 막혀도 +1의 피해를 고정으로 입힙니다.
|
ImpactArrow 투사체가 적의 방어막에 막혀도 +1의 피해를 고정으로 입힙니다.
|
||||||
//AttackSpeedUp 공격 속도가 0.1초 감소합니다.
|
//AttackSpeedUp 공격 속도가 0.1초 감소합니다.
|
||||||
|
|
||||||
|
반사와 관통이 동시에 있을 경우, 관통 후 반사
|
||||||
|
|
||||||
몬스터 이동방식 구현
|
몬스터 이동방식 구현
|
||||||
// - 직진
|
// - 직진
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
[{"n_UnitID":"1001","n_DefaultAttack":"25","n_DefaultHp":"500","f_AttackSpeed":"1.25","n_DefaultProjectileCount":"1","n_ProjectileID":"3001","s_UnitPrefabPath":"DefaultUnit"}]
|
[{"n_UnitID":"1001","n_DefaultAttack":"25","n_DefaultHp":"2000","f_AttackSpeed":"1.25","n_DefaultProjectileCount":"1","n_ProjectileID":"3001","s_UnitPrefabPath":"DefaultUnit"}]
|
||||||
|
|
@ -1 +1 @@
|
||||||
[{"n_PatternID":"1001","n_AppearWave":"1","n_AppearMeleeMonster":"2","n_AppearRangeMonster":"2","f_AppearDelay":"0.5","n_OverlapUnitCount":"1","f_NextWaveDelay":"3.5"},{"n_PatternID":"1001","n_AppearWave":"2","n_AppearMeleeMonster":"2","n_AppearRangeMonster":"2","f_AppearDelay":"0.35","n_OverlapUnitCount":"1","f_NextWaveDelay":"2.5"},{"n_PatternID":"1001","n_AppearWave":"3","n_AppearMeleeMonster":"2","n_AppearRangeMonster":"2","f_AppearDelay":"0.2","n_OverlapUnitCount":"2","f_NextWaveDelay":"2.5"},{"n_PatternID":"1002","n_AppearWave":"1","n_AppearMeleeMonster":"10","n_AppearRangeMonster":"0","f_AppearDelay":"0.5","n_OverlapUnitCount":"2","f_NextWaveDelay":"3"},{"n_PatternID":"1002","n_AppearWave":"2","n_AppearMeleeMonster":"27","n_AppearRangeMonster":"4","f_AppearDelay":"0.35","n_OverlapUnitCount":"2","f_NextWaveDelay":"3"},{"n_PatternID":"1002","n_AppearWave":"3","n_AppearMeleeMonster":"40","n_AppearRangeMonster":"10","f_AppearDelay":"0.2","n_OverlapUnitCount":"3","f_NextWaveDelay":"3"},{"n_PatternID":"1003","n_AppearWave":"1","n_AppearMeleeMonster":"10","n_AppearRangeMonster":"0","f_AppearDelay":"0.5","n_OverlapUnitCount":"2","f_NextWaveDelay":"3"},{"n_PatternID":"1003","n_AppearWave":"2","n_AppearMeleeMonster":"27","n_AppearRangeMonster":"4","f_AppearDelay":"0.35","n_OverlapUnitCount":"2","f_NextWaveDelay":"3"},{"n_PatternID":"1003","n_AppearWave":"3","n_AppearMeleeMonster":"40","n_AppearRangeMonster":"10","f_AppearDelay":"0.2","n_OverlapUnitCount":"3","f_NextWaveDelay":"3"}]
|
[{"n_PatternID":"1001","n_AppearWave":"1","n_AppearMeleeMonster":"14","n_AppearRangeMonster":"0","f_AppearDelay":"0.5","n_OverlapUnitCount":"1","f_NextWaveDelay":"3.5"},{"n_PatternID":"1001","n_AppearWave":"2","n_AppearMeleeMonster":"20","n_AppearRangeMonster":"5","f_AppearDelay":"0.35","n_OverlapUnitCount":"1","f_NextWaveDelay":"2.5"},{"n_PatternID":"1001","n_AppearWave":"3","n_AppearMeleeMonster":"30","n_AppearRangeMonster":"10","f_AppearDelay":"0.2","n_OverlapUnitCount":"2","f_NextWaveDelay":"2.5"},{"n_PatternID":"1002","n_AppearWave":"1","n_AppearMeleeMonster":"10","n_AppearRangeMonster":"0","f_AppearDelay":"0.5","n_OverlapUnitCount":"2","f_NextWaveDelay":"3"},{"n_PatternID":"1002","n_AppearWave":"2","n_AppearMeleeMonster":"27","n_AppearRangeMonster":"4","f_AppearDelay":"0.35","n_OverlapUnitCount":"2","f_NextWaveDelay":"3"},{"n_PatternID":"1002","n_AppearWave":"3","n_AppearMeleeMonster":"40","n_AppearRangeMonster":"10","f_AppearDelay":"0.2","n_OverlapUnitCount":"3","f_NextWaveDelay":"3"},{"n_PatternID":"1003","n_AppearWave":"1","n_AppearMeleeMonster":"10","n_AppearRangeMonster":"0","f_AppearDelay":"0.5","n_OverlapUnitCount":"2","f_NextWaveDelay":"3"},{"n_PatternID":"1003","n_AppearWave":"2","n_AppearMeleeMonster":"27","n_AppearRangeMonster":"4","f_AppearDelay":"0.35","n_OverlapUnitCount":"2","f_NextWaveDelay":"3"},{"n_PatternID":"1003","n_AppearWave":"3","n_AppearMeleeMonster":"40","n_AppearRangeMonster":"10","f_AppearDelay":"0.2","n_OverlapUnitCount":"3","f_NextWaveDelay":"3"}]
|
||||||
Binary file not shown.
|
|
@ -46,6 +46,14 @@ public class AimArrowController : MonoBehaviour
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shoot()
|
void Shoot()
|
||||||
|
{
|
||||||
|
if (IngameMgr.Ins.Get_SkillValue(eSkillType.PreviousArrow) > 0)
|
||||||
|
Shoot_PreviousArrow();
|
||||||
|
else
|
||||||
|
Shoot_Normal();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Shoot_Normal()
|
||||||
{
|
{
|
||||||
var unit = IngameMgr.Ins.Get_CurUnitTData();
|
var unit = IngameMgr.Ins.Get_CurUnitTData();
|
||||||
var attack = unit.n_DefaultAttack + IngameMgr.Ins.Get_SkillValue(eSkillType.AttackUp);
|
var attack = unit.n_DefaultAttack + IngameMgr.Ins.Get_SkillValue(eSkillType.AttackUp);
|
||||||
|
|
@ -54,10 +62,34 @@ public class AimArrowController : MonoBehaviour
|
||||||
IsPC = true,
|
IsPC = true,
|
||||||
m_Data = table_projectile.Ins.Get_Data(unit.n_ProjectileID),
|
m_Data = table_projectile.Ins.Get_Data(unit.n_ProjectileID),
|
||||||
tf_Start = arrow.transform,
|
tf_Start = arrow.transform,
|
||||||
|
PreviousArrow = 0,
|
||||||
Dmg = (int)attack
|
Dmg = (int)attack
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Shoot_PreviousArrow()
|
||||||
|
{
|
||||||
|
var unit = IngameMgr.Ins.Get_CurUnitTData();
|
||||||
|
var attack = unit.n_DefaultAttack + IngameMgr.Ins.Get_SkillValue(eSkillType.AttackUp);
|
||||||
|
|
||||||
|
int prev = (int)IngameMgr.Ins.Get_SkillValue(eSkillType.PreviousArrow);
|
||||||
|
int total = prev + 1;
|
||||||
|
|
||||||
|
for (int i = 0; i < total; i++)
|
||||||
|
{
|
||||||
|
ProjectileMgr.Ins.Shoot_Projectile(new ProjectileData
|
||||||
|
{
|
||||||
|
IsPC = true,
|
||||||
|
PreviousArrow = prev,
|
||||||
|
ArrowIndex = i,
|
||||||
|
m_Data = table_projectile.Ins.Get_Data(unit.n_ProjectileID),
|
||||||
|
tf_Start = arrow.transform,
|
||||||
|
Dmg = (int)attack
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void UpdateArrow(Vector2 currentPos)
|
void UpdateArrow(Vector2 currentPos)
|
||||||
{
|
{
|
||||||
Vector2 dir = currentPos - (Vector2)arrow.transform.position;
|
Vector2 dir = currentPos - (Vector2)arrow.transform.position;
|
||||||
|
|
|
||||||
|
|
@ -34,8 +34,28 @@ public class Projectile : MonoBehaviour
|
||||||
public void Set(ProjectileData pd)
|
public void Set(ProjectileData pd)
|
||||||
{
|
{
|
||||||
m_ProjectileData = pd;
|
m_ProjectileData = pd;
|
||||||
|
Transform startTf = m_ProjectileData.tf_Start;
|
||||||
|
|
||||||
|
if (m_ProjectileData.PreviousArrow > 0)
|
||||||
|
{
|
||||||
|
int total = m_ProjectileData.PreviousArrow + 1;
|
||||||
|
int index = m_ProjectileData.ArrowIndex;
|
||||||
|
|
||||||
|
// 투사체 간격 (데이터 or Sprite 기준)
|
||||||
|
float spacing = 0.5f;
|
||||||
|
|
||||||
|
// 중앙 기준 오프셋
|
||||||
|
float startOffset = -(total - 1) * 0.5f * spacing;
|
||||||
|
float offset = startOffset + index * spacing;
|
||||||
|
|
||||||
|
Vector3 right = startTf.right;
|
||||||
|
Vector3 pos = startTf.position + right * offset;
|
||||||
|
|
||||||
|
transform.SetPositionAndRotation(pos, startTf.rotation);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
transform.SetPositionAndRotation(startTf.position, startTf.rotation);
|
||||||
|
|
||||||
transform.SetPositionAndRotation(m_ProjectileData.tf_Start.position, m_ProjectileData.tf_Start.rotation);
|
|
||||||
if (!m_ProjectileData.IsPC)
|
if (!m_ProjectileData.IsPC)
|
||||||
transform.eulerAngles = new Vector3(0f, 0f, 180f);
|
transform.eulerAngles = new Vector3(0f, 0f, 180f);
|
||||||
|
|
||||||
|
|
@ -142,23 +162,14 @@ public class Projectile : MonoBehaviour
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Projectile_Split(bool hitEnemy)
|
|
||||||
{
|
|
||||||
if (hitEnemy)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 2; i++)
|
|
||||||
{
|
|
||||||
//ProjectileMgr.Ins.Get(transform.position, Quaternion.Euler(0, 0, Random.Range(-20, 20)) * dir);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ProjectileData
|
public class ProjectileData
|
||||||
{
|
{
|
||||||
public ProjectileTableData m_Data;
|
public ProjectileTableData m_Data;
|
||||||
public Transform tf_Start;
|
public Transform tf_Start;
|
||||||
|
public int PreviousArrow; // 0 이면 아님
|
||||||
|
public int ArrowIndex;
|
||||||
ObscuredBool _IsPC; public bool IsPC { get { return _IsPC; } set { _IsPC = value; _IsPC.RandomizeCryptoKey(); } }
|
ObscuredBool _IsPC; public bool IsPC { get { return _IsPC; } set { _IsPC = value; _IsPC.RandomizeCryptoKey(); } }
|
||||||
ObscuredInt _Lv; public int Lv { get { return _Lv; } set { _Lv = value; _Lv.RandomizeCryptoKey(); } }
|
ObscuredInt _Lv; public int Lv { get { return _Lv; } set { _Lv = value; _Lv.RandomizeCryptoKey(); } }
|
||||||
ObscuredInt _Dmg; public int Dmg { get { return _Dmg; } set { _Dmg = value; _Dmg.RandomizeCryptoKey(); } }
|
ObscuredInt _Dmg; public int Dmg { get { return _Dmg; } set { _Dmg = value; _Dmg.RandomizeCryptoKey(); } }
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue