cocos2d-x 그림 입문
15742 단어 cocos2d-x
드로잉
drawPrimitive.cpp
void MySample::drawPrimitives()
{
// 矩形
// x座標, y座標, width, height
Rect rect = Rect( 0, 0, 100, 100 );
Sprite* square = Sprite::create();
square->setTextureRect( rect );
square->setPosition( 100, 100 );
this->addChild( square );
// 塗りつぶしていない円
DrawNode *cirlce = DrawNode::create();
// 中心座標、半径、角度、頂点数、中心に向かう線を描画するか、倍率x、倍率y
cirlce->drawCircle( Vec2::ZERO, 50, 45, 360, true, 1, 1, Color4F::BLUE );
cirlce->setPosition( Vec2( 200, 100 ) );
this->addChild( cirlce );
// 塗りつぶした円(=大きな点)
DrawNode *dot = DrawNode::create();
dot->drawDot( Vec2::ZERO, 50, Color4F::YELLOW );
dot->setPosition( Vec2( 300, 100 ) );
this->addChild( dot );
// 線
DrawNode* line = DrawNode::create();
line->drawSegment( Vec2( 100, 100 ), Vec2( 300, 100 ), 2.5f, Color4F::RED );
this->addChild( line );
}
이미지 정렬
이미지와 같은 리소스는 Resource 아래에 저장됩니다.
image.cpp
void MySample::drawImages()
{
Size viewSize = Director::getInstance()->getWinSize();
// パスを指定して配置
Sprite *imageSp = nullptr;
imageSp = Sprite::create("images/cat_01.jpg");
imageSp->setPosition( Vec2( viewSize.width * 0.5, viewSize.height * 0.5 ) );
this->addChild( imageSp );
// searchPathにパスを登録してから配置
FileUtils::getInstance()->addSearchPath( "images" );
imageSp = Sprite::create("cat_02.jpg");
imageSp->setPosition( Vec2( viewSize.width * 0.5, viewSize.height * 0.5 ) );
this->addChild( imageSp );
}
각도, 회전atan2를 통해 얻은 각도는 시계 반대 주위다.
angle.cpp
// 角度のテスト
void MySample::angleTest()
{
Vec2 center = Vec2( 0, 0 );
Vec2 right = Vec2( 100, 0 );
Vec2 top = Vec2( 0, 100 );
Vec2 left = Vec2( -100, 0 );
Vec2 bottom = Vec2( 0, -100 );
float angle = getAngle( center, right );
CCLOG("右 : %f", angle);
angle = getAngle( center, top );
CCLOG("上 : %f", angle);
angle = getAngle( center, left );
CCLOG("左 : %f", angle);
angle = getAngle( center, bottom );
CCLOG("下 : %f", angle);
}
// 2点の成す角(0~360度)を返す
float MySample::getAngle( cocos2d::Vec2 from, cocos2d::Vec2 to )
{
float dX = to.x - from.x;
float dY = to.y - from.y;
float radian = atan2f( dY, dX );
// ラジアンから度へ変換
float angle = CC_RADIANS_TO_DEGREES( radian );
// 0 ~ 360度に限定
angle += 360;
while (angle >= 360) {
angle -= 360;
}
return angle;
}
결과는 다음과 같다.오른쪽: 0.00000
위: 90.00000
왼쪽: 180.00000
아래: 27.00000
setRotation에 따라 회전은 시계 방향입니다.
lrotation.cpp
// 回転のサンプル
void MySample::rotationTest()
{
for ( int i = 0; i < 10; i++ )
{
// 横一列に配置
Sprite *image = Sprite::create("images/fish.png");
this->addChild(image);
image->setPosition(Vec2(25 + i * 50, 150));
// 10度ずつ回転
image->setRotation(i * 10);
}
}
결실Reference
이 문제에 관하여(cocos2d-x 그림 입문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/8March/items/f7df7fc101e7e1222afc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)