cocos2d-x 게임개발을 하다보면 게임의전체 맵을 보거나 (개발자입장으로) 확대하여 확인해야할 경우가 있다.
그럴때 사용하는 클래스인 Camera Class이다.
Camera를 사용하기 앞서
cocos2dx에서 기본적으로 제공해주는 Camera::getDefaultCamera() 는. 제공되는부분이 적은것으로 판별되어 카메라를 새로 생성하여 사용하는것을 추천.
카메라 사용은 Base가 되는 Layer 나 Scene에서 호출하도록하고 하위클래스에선 호출을 자제하는것으로 하자
Camera Class
Camera : public Node
카메라는 Node 를 상속받았다.
즉 Node 의 속성을 사용가능하다는것.
Camera 는 기본적으로 3개다.
1. Camera* cam = Camera::getDefaultCamera();
2. Camera* cam = Camera::createPerspective();
3. Camera* cam = Camera::createOrthographic();
3종류다.
첫번째 Default 카메라는 기본 카메라이다. Setting이 제한적이다.
두번째 Perspective 카메라는 많이 사용되는 카메라이다.
Camera::createPerspective(float fieldOfView, float aspectRatio, float nearPlane, float farPlane);
float fieldOfView : ProtoType을 확인한결과 일반적으로 40~60 value 를 넣는것이 일반적이라고한다. 하라는데로 합시다.
float aspecRatio : ProtoType의 설명에 의하면 현재 View의 비율을 설정한다고 한다. 쉬운 계산법으로 현재 View의 width Size / height size 를 넣으면 된다.
float nearPlane : 설명하기가 어렵지만 가까이 보여지는 면적의 float 값이다.
float farPlane : far, nearPlane 이 설명이 어렵다 하지만 최대 보여지는 면적으로 생각하면 쉽니다.
<http://www.olejarz.com/arted/perspective/ 참조>
세번째 Orthographic 카메라이다.
Camera::createOrthographic(float zoomX, float zoomY, float nearPlane, float farPlane);
float zoomX : ZoomOut 의 X SIze 를 입력.
float zoomY : ZoomOut 될 Y Size 를 입력.
near , far plane 은 perspective 와 동일하다.
Orthogonal Camera 옵션은 View를 평면으로 보는것
사용법.
camera = Camera::createPerspective(60, _WID_SIZE/_HEIGHT_SIZE, 400, 2000);
// PerSpective 카메라를 생성하고 60 최대치 입력
// WID_SIZE 에서 HEIGHT SIZE 를 나눈 비율치 를 입력.
// 400~ 2000 View 까지보이는 Camera 옵션 설정.
// farPlane 값이 2000 이 최대까지. 2000을 넘는순간 Draw 하지않는다.
camera->setCameraFlag(CameraFlag::USER1);
// 카메라를 사용하기 위해선 카메라 플레그 값을 입력해주어야한다.
// 사용자는 1~8번까지 + Default 총 9개 사용가능 하다.
camera->setPosition3D({ 480,320,1500 });
// 생성한 카메의 포지션값을 지정해준다. 카메라는 Vec3 를 사용하므로 setPostion3D() 를 사용해야한다.
this->setCameraMask((unsigned short)CameraFlag::USER1);
//현재 노드에 CameraMask를 생성해준다. 카메라 Flag 값을 Type Casting 해줘야한다.! 그리고 위에 생성한 카메라플레그 값을 넣어주면 된다.
camera->lookAt(camera->getPosition3D());
lookAt(Vec3 Position);
// camera클래스의 멤버인 lookAt()함수를 이용하여 Position를 보여준다.
addChild(camera);
// 생성한 카메라를 addChild 해준다.
// 하지않을시 보여지지않거나 에러를 발생.
위에 사용법대로하면 카메라 를 컨트롤할수있다.
cocos2dx 3.17.1 C++ prebuilt [Speed up Build in Windows ] / cocos2dx3.17 download link (31) | 2019.04.25 |
---|---|
Cocos2d-x 3.17.1 install Sequence , 코코스 2dx 설치 (31) | 2019.04.24 |
std::vector , cocos2d::Vector 의 차이. (0) | 2017.11.23 |
Cocos2d-x Camera Option 관련. (0) | 2017.10.19 |
Localzation 관련. (0) | 2017.10.12 |
cocos2d-x Physics Contact 관련 (0) | 2017.09.20 |