[질문] 안녕하세요 캐릭터와 카메라 시점(3인칭)에 대한 질문입

2D, 3D, 다각형, 픽셀 등 게임의 그래픽 프로그래밍에 관한 포럼입니다.

Moderator: 류광

Locked
비회원

[질문] 안녕하세요 캐릭터와 카메라 시점(3인칭)에 대한 질문입

Post by 비회원 »

지금 만들고 있는 게임이 3인칭 게임입니다.

제가 궁금하게 생각하는것은요.

1. 캐릭터가 움직일때마다 카메라가 일정거리를 유지하면서 뒤에 따라
당기게 하는것하고요

2. 마우스가 좌우로 움직일때마다 캐릭터는 그 마우스 좌표 방향을
향해서 쳐다보게 하는것입니다.

어떤걸 이용하는지 어떤 방식으로 하는지 자세한 정보 부탁드립니다.
그레이오거
Posts: 322
Joined: 2006-01-18 13:25

벡터와 쿼터니언입니다.

Post by 그레이오거 »

1. ogreOde에 나오는 코드의 일부분입니다. 차 뒤를 졸래졸래 따라다니는 카메라입니다.
const Real followFactor = 0.2;
const Real camHeight = 2.0;
const Real camDistance = 7.0;
const Real camLookAhead = 8.0;

Quaternion q = _vehicle->getSceneNode()->getOrientation();
Vector3 toCam = _vehicle->getSceneNode()->getPosition();

toCam.y += camHeight;
toCam.z -= camDistance * q.zAxis().z;
toCam.x -= camDistance * q.zAxis().x;

mCamera->move( (toCam - mCamera->getPosition()) * followFactor );
mCamera->lookAt(_vehicle->getSceneNode()->getPosition() + ((_vehicle->getSceneNode()->getOrientation() * Vector3::UNIT_Z) * camLookAhead));

일정거리는 아닙니다만 벡터와 쿼터니언에 대해 조금만 알면 고치는건 쉽습니다.

2. 두가지가 있는데요, 하나는 마우스 포인터에서 카메라 뷰로 Ray를 쏘아 충돌좌표를 보게 하는 방식이 있고요, 다른 하나는 마우스 포인터의 dx, dy를 캐릭터의 머리 회전에 반영해주는 식입니다. 마찬가지로 벡터와 쿼터니언 조금만 집어넣으면 해결됩니다.
Locked