진행한 것들

구글 비공개 테스트

- 비공개 테스트 진행 (본격적인 프로덕션을 출시하기 전 비공개 테스트가 필수적임)

 

 

 

 

오늘의 이슈 / 내일 할 것

오늘 이슈

- Web 빌드 시 플레이어 공격이 여러 번 되는 버그

<기존 코드>

protected override void OnAttack()
{
        HealthSO targetSO = null;
        IDamageable damageable = null;
        Vector3 offsetVec = UpdateRayOffset();

        RaycastHit[] middle = Physics.RaycastAll(offsetVec, modelTrans.forward, _playerSO.AttackRange, layer);
        List<RaycastHit> hits = new List<RaycastHit>(middle);

        Vector3 topVec = offsetVec + new Vector3(0f, rayOffsetYMod, 0f);
        RaycastHit[] top = Physics.RaycastAll(topVec, modelTrans.forward, _playerSO.AttackRange, layer);
        hits.AddRange(top);

        Vector3 bottomVec = offsetVec + new Vector3(0f, -rayOffsetYMod, 0f);
        RaycastHit[] bottom = Physics.RaycastAll(bottomVec, modelTrans.forward, _playerSO.AttackRange, layer);
        hits.AddRange(bottom);

        hits.Distinct();
}

 

 

원인 : RaycastHit이 ValueType이라 Distinct를 하더라도 중복값 체크가 되지 않음

해결 : RaycastHit의 ReferenceType인 Collider에 접근하여 중복을 허용하지 않는 HashSet을 통해 해결

<해결 코드>

protected override void OnAttack()
{
        HealthSO targetSO = null;
        IDamageable damageable = null;
        Vector3 offsetVec = UpdateRayOffset();

        HashSet<Collider> hits = new HashSet<Collider>();

        RaycastHit[] middle = Physics.RaycastAll(offsetVec, modelTrans.forward, _playerSO.AttackRange, layer);
        AddNewRaycastHit(hits, middle);

        Vector3 topVec = offsetVec + new Vector3(0f, rayOffsetYMod, 0f);
        RaycastHit[] top = Physics.RaycastAll(topVec, modelTrans.forward, _playerSO.AttackRange, layer);
        AddNewRaycastHit(hits, top);

        Vector3 bottomVec = offsetVec + new Vector3(0f, -rayOffsetYMod, 0f);
        RaycastHit[] bottom = Physics.RaycastAll(bottomVec, modelTrans.forward, _playerSO.AttackRange, layer);
        AddNewRaycastHit(hits, bottom);
}
private void AddNewRaycastHit(HashSet<Collider> hits, RaycastHit[] middle)
    {
        foreach (var item in middle)
        {
            Collider collider = item.collider;
            if (!hits.Contains(collider))
                hits.Add(collider);
        }
    }

 

내일 할 것

- 웹 QA 피드백 반영하기

 

 

오늘의 회고

 오늘은 구글 플레이 스토어에 앱 정보를 등록했다. 우리가 개발한 프로젝트에 해당되지 않는 질문들이 많았고 그거 보는 재미도 있었던 것 같다. 그리고 생각보다 이미지 규격이 까다로웠는데 아마 모바일에서 해상도를 맞추느라 제한이 있는가보다 하고 생각했다. 내일은 웹 배포 한 것을 바탕으로 유저 피드백을 반영할 생각이다. 내일도 파이팅!

+ Recent posts