본문 바로가기

Cocos2d-x v3.17/기본기능

[Cocos2d-x 기본기능]스프라이트 컨트롤하기

반응형

스프라이트 컨트롤하기 

 

 

스프라이트를 생성하고 속성을 수정하여 컨트롤할수 있습니다. 


스프라이트 생성하기:

C++ 

auto mySprite = Sprite::create("mysprite.png");

 

피벗이 스프라이트가 좌표계산할때 기준점이 된다고 말했었습니다.

이 피벗은 스케일,회전,기울이기 등 선형변환에 영향을 주고 색상과 투명도엔 영향을 주지 않습니다.

피벗의 원점(0,0)은 좌표계의 좌측하단입니다.

당신이 피벗값을 설정하려면 이것을 확실하게 알고 있어야 합니다.

피벗의 디폴드값은(0.5,0.5)입니다(스프라이트의 정중앙값). 

 

피벗 설정하기. 

C++ 

// DEFAULT anchor point for all Sprites

mySprite->setAnchorPoint(0.50.5); 

// bottom left

mySprite->setAnchorPoint(00); 

// top left

mySprite->setAnchorPoint(01); 

// bottom right

mySprite->setAnchorPoint(10); 

// top right

mySprite->setAnchorPoint(11); 

 

아래그림을 보고 피벗이 스프라이트 위치에 대한 감을 잡으세요.빨간점은 옆에있는 스프라이트의 피벗입니다.

 

위치 

 

스프라이트 위치는 피벗에 영향을 받습니다.한번 보십시오.피벗의 위치에 따라서 그림의 위치가 변경됩니다.

다 똑같은 좌표인데 말이죠.SetPosition()을 사용하지 않았는데도 위치의 변화가 일어나는걸 명심하십시오.

 

우리가 스프라이트의 위치를 설정할때 보통 setPosition()메서드를 사용합니다.

정확한 위치에 원하는 그림을 넣기위해선 피벗을 어떻게 사용할지 생각해봐야 합니다. 

C++ 

// position a sprite to a specific position of x = 100, y = 200.

mySprite->setPosition(Vec2(100200)); 


회전 

 

setRotation()메서드를 사용하고 파라미터로 각도값을 주면 회전합니다.

음수값을 주게되면 역방향으로 회전하게 됩니다.디폴트 회전값은 0.0입니다. 


C++ 

// rotate sprite by +20 degrees

mySprite->setRotation(20.0f); 

// rotate sprite by -20 degrees

mySprite->setRotation(-20.0f); 

// rotate sprite by +60 degrees

mySprite->setRotation(60.0f); 

// rotate sprite by -60 degrees

mySprite->setRotation(-60.0f);

스케일 

 

setScale()메서드를 이용하여 축소확대를 할수있습니다.

수평스케일,수직스케일,전체적 스케일을 사용할수 있습니다.

디폴트 로 수평과 수직의 스케일값은 1.0입니다. 


C++ 

// increases X and Y size by 2.0 uniformly

mySprite->setScale(2.0); 

// increases just X scale by 2.0

mySprite->setScaleX(2.0); 

// increases just Y scale by 2.0

mySprite->setScaleY(2.0);

 

기울기 

 

setSkewX()를 통해서 기울기를 조절할수 있습니다.

수평기울기를 설정할수 있고 수직기울기를 설정할수 있습니다

혹은 수직수평 동시에 기울기를 할수 있습니다.

디폴트값으로 수평수직모두 0.0입니다. 


C++ 

// adjusts the X skew by 20.0

mySprite->setSkewX(20.0f); 

// adjusts the Y skew by 20.0

mySprite->setSkewY(20.0f); 

색상 

 

setColor()로 색상값을 설정할수 있습니다

파라미터로 RGB값을 사용하고 Color3B구조체를 사용하면 됩니다.

RGB는 0~255값입니다.

Red,Green,Blue세개값의 농도이며 수가 높을수록 색상이 진해집니다.

(255,255,255)는 하얀색이고 당신이 RGB값을 지정하고 싶지않다면 Cocos2d-x가 제공하는 값을 사용해도 됩니다.예를들면 Color3B::White 이런식으로말이죠. 


C++ 

// set the color by passing in a pre-defined Color3B object.

mySprite->setColor(Color3B::WHITE); 

// Set the color by passing in a Color3B object.

mySprite->setColor(Color3B(255255255)); // Same as Color3B::WHITE 

 

투명도 

 

스프라이트의 투명도는 setOpacity()메서드를 사용하고 파라미터는 0~255입니다.

수가 클수록 투명도가 낮습니다.

255는 완전불투명,0은 완전 투명입니다. 


C++ 

// Set the opacity to 30, which makes this sprite 11.7% opaque.

// (30 divided by 256 equals 0.1171875...)

mySprite->setOpacity(30); 

   

출처: <http://cocos2d-x.org/docs/cocos2d-x/zh/sprites/manipulation.html

   


 


반응형