Unity/FPS Project
FPS Project - 4 [ 데미지2 ]
SiJun-Park
2025. 4. 5. 07:13
이번은 저번 Project - 3에 이어서 데미지 입는 부분을 추가 구현을 하였습니다.
몬스터가 피해를 입으면 빨간색으로 변하도록 하였습니다.
public void Hit(float damage, object obj)
{
if (Dead) return;
HP -= damage;
if (HP <= 0) Die();
switch (obj)
{
case PlayerControlManager player:
player.TextManager.ChangeHp(HP);
if (HitCheck == false) { HitCheck = true; ChangeColor(0); }
break;
case GameObject enemy:
HpTextControl txt = Instantiate(MonsterHP, enemy.transform);
txt.transform.position = new Vector3(enemy.transform.position.x +0.4f, enemy.transform.position.y + pos, enemy.transform.position.z);
txt.OnSetting(damage, size);
ChangeColor(1);
break;
}
}
바뀐점은 ChangeColor라는 것이 생겼습니다
이것이 0이면 유저이고 1이면 몬스터입니다.
public void ChangeColor(int type)
{
if (CurrentCoroutine != null) StopCoroutine(CurrentCoroutine);
CurrentCoroutine = StartCoroutine("OnChangeColor", type);
}
IEnumerator OnChangeColor(int type)
{
if (type == 0)
{
Color color = HitScreen.color;
yield return new WaitForSeconds(.2f);
for (float i = 0; i < 0.5f; i += Time.deltaTime)
{
color.a = Mathf.Lerp(0.13f, 0f, i / 0.5f);
HitScreen.color = color;
yield return null;
}
HitCheck = false;
}
else
{
foreach (var item in SkinRenderer) item.material.color = Color.red;
yield return new WaitForSeconds(ChangeSpeed);
foreach (var item in SkinRenderer) item.material.color = Color.white;
}
}
그래서 피해를 입으면 ChangeColor에 들어와서 코루틴이 만약에 돌고있다면 중단시키고 새롭게 시작을 시킵니다.
*여기서 유저일 경우는 화면이 지속적으로 빨게지기 때문에 한번만 되도록 하였습니다.
https://sijun1191.tistory.com/37
RPG Project - 5 [ 플레이어 체력 감소 및 피해 효과 ]
이번 목표는 유저 체력 감소와 피해 효과 입니다. 몬스터가 유저를 인식하고 공격 시 유저는 피해를 입으며 화면이 반짝이는 효과를 주려고 합니다. bool _isCheck; public void Hitted(int damage) { GameOb
sijun1191.tistory.com
위의 RPG Project에서 사용한 방법과 동일하게 하였습니다.
몬스터일 경우 코드를 본다면 foreach로 돌게 하였습니다
그 이유가 이번에 받은 asset이 여러 부위로 나뉘어져 있어서 한 부위만 하면 그 부위만 특정적으로 빨간색으로 변하기 때문에
모든 Render를 바꾸기 위해서 위와같이 작업을 하였습니다.