공부한 내용

원형으로 발사되는 투사체 구현

플레이어를 중심으로 특정 갯수만큼 원형으로 발사되는 투사체를 구현하고 싶었다.

그리고 너무 단순하게 한 방향으로만 나가는 것이 재미 없다고 생각해서 두 방향으로 나가게 했다.

360도를 개수만큼 나누어 투사체가 뻗어가게 하였고 다른 방향은 나눈 기준의 절반을 더해줘 두 가지 패턴이 나오게 구현했다.

protected override IEnumerator Shoot()
{
    while (shovels.Count < Data.count)
    {
        Shovel shovel = CreateNewWeapon() as Shovel;
        shovels.Add(shovel);
    }

    currentElapsedTime += Time.deltaTime;

    float angleUnit = ANGLE / Data.count;

    float angle = 0;
    if (isEven)
    {
        float angleMod = angleUnit * 0.5f;
        for (int i = 0; i < Data.count; i++)
        {
            angle = angleUnit * i + angleMod;
            if (angle >= ANGLE)
                angle -= ANGLE;

            SetShovelState(angle, i);
        }
    }
    else
    {
        for (int i = 0; i < Data.count; i++)
        {
            angle = angleUnit * i;
            SetShovelState(angle, i);
        }
    }

    isEven = !isEven;


    yield return CoroutineRef.GetWaitForSeconds(timePerAttack);
    StartCoroutine(Shoot());
}

 

 

오늘의 회고

 오늘은 무기를 발사하는 Shooter와 발사체를 구현하였다. 최대한 관리 쪽은 Shooter에서 처리하고 발사체의 이동은 따로 Weapon 클래스에서 구현하도록 했다. 구현하면서 구조에 대해서 많이 생각하게 되는데 기본적으로 관리하는 객체와 관리되는 객체의 행동을 구분하는 게 중요하다는 생각이 들었다.

 내일부터는 추석 연휴이다. 짬짬이 구현해서 다음주 회의 전까지 맡은 역할을 다 구현하고 합칠 수 있도록 해야겠다. 추석 연휴 잘 보내자!

 

+ Recent posts