cocos2d-x 드로잉 입문
15880 단어 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 );
}
이미지 배치
이미지와 같은 리소스는 리소스 아래에 저장됩니다.
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.000000
상단 : 90.000000
왼쪽 : 180.000000
아래 : 270.000000
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/HamachiTaro/items/f7df7fc101e7e1222afc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)