나는 하향식 게임을 위해 2D 카메라 (아래 코드)를 만들었습니다. 플레이어 위치가 0.0x와 0.0y에 가까울 때 모든 것이 잘 작동합니다.XNA 2D 카메라 느슨한 정밀도
거리가 증가 불행하게도으로 변환은 약 0.0X 30e7y에서 문제를 (넵 즉 3000 만 y를) 카메라가 플레이어의 이동은 (카메라가 각각의 끝에서 플레이어의 위치에 업데이트되는 때 전율하기 시작 것 같다 업데이트) 실제로 큰 거리에서 10 억 개 이상의 카메라가 플레이어를 추적하지 못합니다. 매트릭스에서 오류가 너무 많이 발생했다는 것을 짐작할 수 있습니다.
제 질문은 : 행렬에 문제가 있거나 극단적 인 숫자에 대한 표준 동작입니다.
카메라 방법을 변환 :
public Matrix getTransform()
{
Matrix transform;
transform = (Matrix.CreateTranslation(new Vector3(-position.X, -position.Y, 0)) *
Matrix.CreateRotationZ(rotation) * Matrix.CreateScale(new Vector3(zoom, zoom, 1.0f)) *
Matrix.CreateTranslation(new Vector3((viewport.Width/2.0f), (viewport.Height/2.0f), 0)));
return transform;
}
카메라 업데이트 방법 :
이것은 그 다음 카메라 위치로 설정되어 기본 Vector2를 반환,이 ID의 주어진 객체의 위치를 요청합니다.
if (camera.CameraMode == Camera2D.Mode.Track && cameraTrackObject != Guid.Empty)
{
camera.setFocus(quadTree.getObjectPosition(cameraTrackObject));
}
매트릭스 오류가 발생하는 이유를 설명하는 사람이 누구인지 알 수 있다면 가장 감사하게 생각합니다.
매우 이상합니다. 나는이 매우 높은 숫자가 필요하다고 생각하고 있습니다 (수백만). 가능한 한 내 첫 번째 제안은 이것을 줄이는 것입니다. – tjheslin1
나는 주위에 해결 방법을 알아 냈습니다, 그리고 아래의 버그에 대한 이유를 게시, 코멘트 주셔서 감사합니다 : D 조 – user3170345