2011-04-13 4 views
0

에 의해 변수를 전달 나는 그들이 매우 유사하기 때문에 나는이 일에 합병을 시도하고있어 다음과 같은 두 가지 수준의 기능을 가지고 :이상한 행동이 개 수준의 기능을 통합하고 참조

void Camera::UpdateCameraPosition(void) { 
    if(cameraMode == CAMERA_MODE_THIRD_PERSON) { 
     float alpha = Math::DegreesToRadians(Rotation.y); 
     float beta = Math::DegreesToRadians(Rotation.x); 

     Position.SetValue(
      Player.x + CAMERA_ORBIT_OFFSET * cos(beta) * sin(alpha), 
      Player.y + CAMERA_ORBIT_OFFSET * sin(-beta), 
      Player.z + CAMERA_ORBIT_OFFSET * cos(beta) * cos(alpha) 
     ); 
    } else { 
     Position = Player; 
    } 
} 

void Camera::UpdatePlayerPosition(void) { 
    if(cameraMode == CAMERA_MODE_THIRD_PERSON) { 
     float alpha = Math::DegreesToRadians(Rotation.y); 
     float beta = Math::DegreesToRadians(Rotation.x); 

     Player.SetValue(
      Position.x - CAMERA_ORBIT_OFFSET * cos(beta) * sin(alpha), 
      Position.y - CAMERA_ORBIT_OFFSET * sin(-beta), 
      Position.z - CAMERA_ORBIT_OFFSET * cos(beta) * cos(alpha) 
     ); 
    } else { 
     Player = Position; 
    } 
} 

당신이 볼 수 있듯이, PlayerPosition은 클래스의 두 개의 전용 변수입니다. 데이터 유형은 Vector3D이고 또 다른 클래스입니다.

void Camera::UpdateCameraOrPlayerPosition(Vector3D &target, Vector3D reference) { 
    if(cameraMode == CAMERA_MODE_THIRD_PERSON) { 
     float alpha = Math::DegreesToRadians(Rotation.y); 
     float beta = Math::DegreesToRadians(Rotation.x); 

     target.SetValue(
      reference.x - CAMERA_ORBIT_OFFSET * cos(beta) * sin(alpha), 
      reference.y - CAMERA_ORBIT_OFFSET * sin(-beta), 
      reference.z - CAMERA_ORBIT_OFFSET * cos(beta) * cos(alpha) 
     ); 
    } else { 
     target = reference; 
    } 
} 

이 컴파일 및하지만 동일하게 동작하지 않습니다

나는 이런 식으로 병합하기 위해 노력하고있어. 다른 두 함수가 작동하는 동안이 함수 호출을 대신이 함수 호출을 바꿀 때 작동하지 않습니다. 내가 한

대체 사항이 있습니다 : 내가 대신 참조 포인터로 시도

UpdatePlayerPosition() -> UpdateCameraOrPlayerPosition(Player, Position) 
UpdateCameraPosition() -> UpdateCameraOrPlayerPosition(Position, Player) 

, 결과는 동일했다. 내가 여기서 뭔가를 놓치고 있니?

+3

'UpdateCameraPosition() -> UpdateCameraOrPlayerPosition (Position, Player)'의 경우 'CAMERA_ORBIT_OFFSET'의 사용을 +에서 -로 변경했습니다. –

+1

저는 멍청하고 눈이 멀었습니다 : S –

답변

0

target.SetValue는 카메라에 +를 사용하고 X 및 Z 좌표를 조정할 때 플레이어에 -를 사용합니다.

관련 문제