0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

cocos2d-xでゲームを作ってる最中のメモ

Last updated at Posted at 2016-09-28

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;
	};
とりあえずこれでできるはず。 これ毎回やるんだけど、その度にタップ判定の位置がなんかずれるから、今後はこれでいこうかと思います。 もし「それこれが原因じゃね?」てのがあればコメントいただけると泣いて喜びます。30近くのおっさんが。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?