진행한 것들

변이 효과 UI 연결

변이 효과를 UI에 연결하고 자연스럽게 보이도록 코드로 수치를 조절했다.

켜질 때오브젝트를 먼저 키고 서서히 Dissolve 값이 증가하도록 했다면

꺼질때Dissolve 값이 먼저 감소하고 오브젝트를 나중에 끄도록 했다.

Aura 효과는 Dissolve 효과보다 더 길게 만들어 변신하는 느낌을 더 줬다.

public IEnumerator ShowWeaponEffectGradually(List<GameObject> goList)
{
    _data.DissolveMaterial.DOFloat(1, _data.SplitValue, _data.DissolveDuration);

    foreach (GameObject go in goList)
    {
        go.SetActive(true);
    }

    ActivateAura(true);
    yield return CoroutineRef.GetWaitForSeconds(_data.AuraDuration);
    ActivateAura(false);
}

public IEnumerator ShowWeaponEffectWithoutDissolve(List<GameObject> goList)
{
    foreach (GameObject go in goList)
    {
        go.SetActive(true);
    }

    ActivateAura(true);
    yield return CoroutineRef.GetWaitForSeconds(_data.AuraDuration);
    ActivateAura(false);
}

public IEnumerator ConcealWeaponEffectGradually(List<GameObject> goList)
{
    _data.DissolveMaterial.DOFloat(0, _data.SplitValue, _data.DissolveDuration);

    ActivateAura(true);
    yield return CoroutineRef.GetWaitForSeconds(_data.AuraDuration);
    ActivateAura(false);

    foreach (GameObject go in goList)
    {
        go.SetActive(false);
    }
}

 

 

오늘의 이슈 / 내일 할 것

오늘 이슈

- 문제 : 파괴 가능 오브젝트를 처리하는 것 -> Idamageable 인터페이스로 처리할지?

- 해결 : IDamageable의 필요 없는 다른 메서드들도 상속받기 때문에 IInteract 인터페이스를 따로 만들어서 구현

foreach (RaycastHit hit in hits)
{
    damageable = hit.collider.GetComponent<IDamageable>();
    if (damageable != null)
    {
        EnemyController enemyController = hit.collider.GetComponentInParent<EnemyController>();
        EnemyStatHandler statHandler = enemyController.StatHandler;

        targetSO = statHandler.Data;
        damageable = statHandler;

        enemyController.StateMachine.Knockback(_modelTrans.forward, _playerSO.KnockbackPower);

        Attack(_playerSO, targetSO, damageable);
        return;
    }

    IInteract interactable = hit.collider.GetComponent<IInteract>();
    if (interactable != null)
    {
        Attack(interactable);
    }
}

 

 

내일 할 것

- 변이 컷씬 보여주기

 

 

오늘의 회고

  오늘은 어제 만든 쉐이더 효과를 스크립트에서 제어하도록 했고 그 과정 중에 코루틴을 사용했다. 코루틴에서 WaitForSeconds라는 함수를 반환할 수 있는데 매번 new 하면 GC가 많이 쌓이니 CoroutineRef라는 클래스를 만들어 딕셔너리에 호출된 WaitForSeconds들을 등록하는 딕셔너리를 필드로 놓고 반환해주는 메서드를 만들었다. 내일도 열심히 해보자 파이팅!

+ Recent posts