TIL(2024,08,08)최종 프로젝트 1차구현 하나씩 만들기

김보근·2024년 8월 8일

Unity

목록 보기
62/113

TIL: Unity에서 스킬 효과 구현 및 문제 해결

오늘의 작업

  1. 스킬 구현
    각 스킬이 지속 시간과 쿨다운 시간을 가지도록 Unity에서 스킬 시스템을 구현했습니다.
    스킬이 사용될 때 스킬 정보를 표시하는 기능을 추가했습니다. 여기에는 스킬 이름과 남은 지속 시간이 포함됩니다.
    스킬의 지속 시간이 끝나면 스킬 정보 오브젝트가 비활성화되도록 설정했습니다.
  2. 스킬 정보 표시
    스킬 버튼을 클릭했을 때 스킬 정보 오브젝트(skillInfoObject)가 활성화되도록 했습니다.
    스킬이 사용될 때 스킬의 남은 시간을 실시간으로 업데이트하고, 스킬 지속 시간이 끝나면 스킬 정보 오브젝트가 비활성화되도록 했습니다.

트러블슈팅

  1. 스킬 정보 오브젝트 비활성화 문제

문제:
스킬 지속 시간이 끝나도 스킬 정보 오브젝트(skillInfoObject)가 비활성화되지 않는 문제가 발생했습니다.

해결 방법:
문제 원인 파악:
초기 구현에서는 쿨다운 시간 동안만 대기하고, 스킬 지속 시간에 대한 처리가 누락되었습니다.

해결 과정:
SkillEffect 코루틴에서 스킬 지속 시간을 추적하는 로직을 추가했습니다.
스킬 지속 시간 동안 대기한 후, 지속 시간이 끝나면 skillInfoObject를 비활성화하도록 수정했습니다.

protected IEnumerator SkillEffect()
{
    onCooldown = true;
    cooldownRemaining = cooldownTime;
    skillTimeRemaining = skillDuration;

    // 스킬 정보 오브젝트 활성화
    if (skillInfoObject != null)
    {
        skillInfoObject.SetActive(true);
    }

    // 스킬 지속 시간 동안 대기
    float elapsedSkillTime = 0f;
    while (elapsedSkillTime < skillDuration)
    {
        elapsedSkillTime += Time.deltaTime;
        yield return null;
    }

    // 스킬 지속 시간이 끝났을 때 스킬 정보 오브젝트 비활성화
    if (skillInfoObject != null)
    {
        skillInfoObject.SetActive(false);
    }

    // 쿨다운 시간 동안 대기
    while (cooldownRemaining > 0)
    {
        cooldownRemaining -= Time.deltaTime;
        yield return null;
    }

    onCooldown = false;
    UpdateCooldownUI(0);
}
private void OnSkillInfoButtonClick()
{
    if (skillTextObject != null)
    {
        skillTextObject.SetActive(true);
        StartCoroutine(DisableAfterDelay(skillTextObject, 2.0f)); // 2초 후에 비활성화
    }
}

private IEnumerator DisableAfterDelay(GameObject target, float delay)
{
    yield return new WaitForSeconds(delay);
    target.SetActive(false);
}

결론

오늘은 Unity에서 스킬 시스템을 구현하고, 스킬 정보 오브젝트의 활성화 및 비활성화 문제를 해결했습니다. 스킬 사용 시 지속 시간과 쿨다운 시간을 관리하고, 스킬 정보 오브젝트가 적절히 표시되도록 수정했습니다. 또한, skillInfoButton을 클릭하여 스킬 정보를 표시하고, 2초 후 또는 다른 곳을 터치했을 때 해당 오브젝트가 비활성화되도록 구현했습니다.

profile
게임개발자꿈나무

0개의 댓글