Game Develop

나중에 고쳐야할 버그목록. 본문

ComputerGraphics/My Project

나중에 고쳐야할 버그목록.

MaxLevel 2021. 4. 19. 02:35



임시방편예외처리로 해결한 버그목록



1. PatrolState에서 실제이동부분코드. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (Timer::Get()->GetFPS() > 10// 초기실행시 FPS값이 순간적으로 1이 되는것에 따른 버그로 인한 예외처리. 
        {
            monster->MoveToDestUsingAStar(mDest);
            monster->SetAnimation(eAnimation::Run); // Run.
        }
 
        if (fabs(mPatrolDestPos.x - monster->position.x) < 1.0f && // 목표지점 도착하면
            fabs(mPatrolDestPos.z - monster->position.z) < 1.0f)
        {
            monster->GetPath().pop_back();
            mbPatrolMove = false;
            mPatrolRandomNum = GameMath::Random(5.0f, 10.0f); // 정찰 간격.
            mCurrentTime = Timer::Get()->GetRunTime();
            mStandTime = mCurrentTime + mPatrolRandomNum;
 
            monster->SetAnimation(eAnimation::Idle);
        }
}
cs




노트북으로 실행했었음.
프로그램 실행시 맨 처음에 잠깐 FPS가 1일때가 있다.
그러면 그만큼 Delta값이 확 높아져버린다.

코드같은 경우, 목표지점을 정하고 그쪽으로의 방향벡터를 구한다음 방향벡터값에 speed를 곱해 이동하는 방식인데,
문제는 프로그램 초기실행시 몬스터의 포지션값이 순간 높아진 Delta값으로 인해 목표지점을 넘어버리는데에 있다.

예를들어 목표지점이 오른쪽에 있다고 하자.
의도한대로라면 방향벡터가 오른쪽으로 설정되어 오른쪽으로 가다가 목표지점에 가면 멈출것이다.
그런데 Delta값이 순간적으로 높아져버린탓에, 방향벡터는 오른쪽으로 설정되긴했는데 순간 목표지점보다 더 오른쪽으로 되버린다.
그래서 실제로는 방향벡터는 여전히 오른쪽방향벡터인데 목표지점을 가지는 못했으니 그냥 계속 오른쪽방향벡터로만 움직이는거다.
목표는 왼쪽에 있는데, 움직임은 오른쪽으로만 움직이니 영-원히 오른쪽으로만 가게된다.

그래서 일단 임시방편으로 FPS값이 10이상일때 이동을 적용하게 해놔서 막긴 했다.
당연히 다시 수정해야할 버그다..