두둥 Unity 게임 개발 숙련 발제날
또 한 번 새로운 팀을 만났다 !
평소에 약간 눈여겨 보고 있었던 분과 팀이 되었다 하핫
이 분이 팀장인 팀에서 일해보고 싶다! 했었는데 드림스컴트루 해버림
얏호♪~ ᕕ( ᐛ )ᕗ
팀장 너무 많이 하셔서 그만하고 싶다고 하셨지만...팀장 해주시길 바랐어요.....이런 팀원이라 죄송합니다....히죽..
팀 노션 작성하고 강의 듣기 지옥 시작
if (distance <= shootRange)
{
// 나와 Player 사이 막혀있는 지형이 있는지 확인
int layerMaskTarget = Stats.CurrentStats.attackSO.target;
RaycastHit2D hit = Physics2D.Raycast(transform.position, direction, 11f, (1 << LayerMask.NameToLayer("Level")) | layerMaskTarget);
if (hit.collider != null && layerMaskTarget == (layerMaskTarget | (1 << hit.collider.gameObject.layer)))
{
CallLookEvent(direction);
CallMoveEvent(Vector2.zero); // 이동 X
IsAttacking = true;
}
}
private Vector2 _knockback = Vector2.zero;
private float knockbackDuration = 0.0f;
private void FixedUpdate()
{
ApplyMovement(_movementDirection);
if (knockbackDuration > 0.0f)
{
knockbackDuration -= Time.fixedDeltaTime;
}
}
public void ApplyKnockback(Transform other, float power, float duration)
{
knockbackDuration = duration;
_knockback = -(other.position - transform.position).normalized * power;
}
private void Update()
{
if (_timeSinceLastChange < healthChangeDelay) // 마지막 공격을 당했을 때 _timeSinceLastChange를 0으로 설정
{
_timeSinceLastChange += Time.deltaTime;
if (_timeSinceLastChange >= healthChangeDelay)
{
OnInvincibilityEnd?.Invoke(); // 0.5초가 지나면 무적 해제
}
}
}
public bool ChangeHealth(float change)
{
if (change == 0 || _timeSinceLastChange < healthChangeDelay) // 아직 데미지를 받고 있는 중이면 넘어감
{
return false;
}
_timeSinceLastChange = 0f;
CurrentHealth += change;
CurrentHealth = CurrentHealth > MaxHealth ? MaxHealth : CurrentHealth;
CurrentHealth = CurrentHealth < 0 ? 0 : CurrentHealth;
if (change > 0)
{
OnHeal?.Invoke();
} else
{
OnDamage?.Invoke();
}
if (CurrentHealth <= 0f)
{
CallDeath();
}
return true;
}
void OnDeath()
{
_rigidbody.velocity = Vector3.zero;
foreach (SpriteRenderer renderer in transform.GetComponentsInChildren<SpriteRenderer>())
{
Color color = renderer.color;
color.a = 0.3f;
renderer.color = color;
}
// 모든 컴포넌트는 Behaviour를 상속받게 됨
foreach (Behaviour component in transform.GetComponentsInChildren<Behaviour>())
{
component.enabled = false;
}
Destroy(gameObject, 2f);
}
나머지는 다음 TIL로~ヾ(°∇°*)