6-22. 15조 CowardMonster 수정

keubung·2024년 12월 26일

1. CowardMonster 수정

  • 기존의 CowardMonster
    • 감지가 되어 나타나면 일정 시간동안 랜덤 방향으로 이동한다.
    • 총 도망가는 시간에서 마지막 사라지는 시간동안 알파값을 조정하여 fade효과를 준다.
    • 플레이어를 공격하지 않는다.
      -> fade 효과를 시간으로 판단
  • 수정된 CowardMonster : 목표 지점으로 플레이어를 인도하기 위한 수단
    • 감지가 되어 나타나면 목표 지점까지 이동한다.
    • 플레이어의 시야에서 벗어나면 사라진다.
    • 다시 플레이어가 감지하면 이어서 목표지점으로 이동한다.
    • 목표지점 일정 거리 전에 fade효과와 함께 목표지점에 도달 후 사라진다.
    • 플레이어를 공격하지 않는다.
      -> fade 효과를 거리로 판단

수정된 코드

/// <summary>
/// 도망 조건을 만족하며 도망 위치로 이동하는 함수
/// </summary>
void MonsterFleeingUpdate()
{
    // 도착 지점 마지막에 fade 효과
    float remainingDistance = Vector3.Distance(monster.transform.position, agent.destination);
    if (remainingDistance <= 2f)
    {
        StartFadeEffect(remainingDistance);
    }
    else if (remainingDistance <= 0f)
    {
        // 도달하면 더 이상 바로 사라짐
        monster.myRenderer.enabled = false;
    }
}

/// <summary>
/// 남은 거리에 따라 알파값 조정
/// </summary>
void StartFadeEffect(float remainingDistance)
{
    if (monster.myRenderer != null)
    {
        // 남은 거리가 1에서 0으로 줄어드는 동안 알파값을 1에서 0으로 변경
        float fadeAlpha = Mathf.Lerp(1f, 0f, (1f - remainingDistance) / 1f);
        Color monsterColor = originalColor;
        monsterColor.a = fadeAlpha;
        monster.myRenderer.material.color = monsterColor;

        if (fadeAlpha <= 0.6f)  // 0.6 임시
        {
            monster.myRenderer.enabled = false;
            monster.myRenderer.material.color = originalColor;
            ResetToSpawnPoint();
        }
    }
}

/// <summary>
/// 지정해준 포지션으로 이동하는 함수
/// </summary>
void SetTargetDestination()
{
    float maxPosition = 1.0f;

    if (targetPosition != null)
    {
        if (NavMesh.SamplePosition(targetPosition.position, out NavMeshHit hit, maxPosition, NavMesh.AllAreas))
        {
            agent.SetDestination(hit.position);
        }
    }
}
profile
김나영(Unity_6기)

0개의 댓글