cocos2d-xでゲーム制作を独学していたときに「あ、これ忘れそう」と思ったことをメモしておきます。
自分自身の備忘録にもなりますし、他にも同じように「あれ、どうやったっけ・・・?」という人の助けになれば嬉しいです。
(この記事は「あ、これ忘れそう」てのがある度に更新されます。更新そのものを忘れなければ。)
機種による画像の大きさの変化をなくしたい
何も処理をしていない状態だと、画面右上に置いた画像が、本来なら1/4しかでないはずなのに全部出てたり、もしくはほんの少ししかでてなかったり、というのは誰しも通る道かと(俺だけ?)。 そんなときには、最初に読み込むSceneのinit関数の冒頭(Scene::init()の直後)にコレを置いてあげる。
int resolution_size_width = 640;
int resolution_size_height = 480;
auto gl_view = Director::getInstance()->getOpenGLView();
gl_view->setDesignResolutionSize(resolution_size_width, resolution_size_height, ResolutionPolicy::SHOW_ALL);
これを読み込めば、640*480で表示されます。
また「setDesignResolutionSize」の第三引数「ResolutionPolicy::SHOW_ALL」は、「指定した大きさで画面いっぱいに表示するが、引き延しはしない」という内容です。
ので、機種によっては上下または左右に余白ができる場合があります。
たぶん余白のところを活かす方法があると思いますが、それについては調べる気になったら調べます。
追記
スプライトの範囲をタップしたときのイベントを作る
ほい。
auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = [=](Touch *touch, Event *event) {
Rect target_box = event->getCurrentTarget()->getBoundingBox();
Point tap_point = touch->getLocation();
if (target_box.containsPoint(tap_point)) {
this->removeFromParentAndCleanup(true);
return true;
}
return false;
};