画像を配置するのは簡単なんですが、
その配置位置を調整するのがめちゃくちゃ大変だったりします。
auto Button = Sprite::create("btnChara.png");
if (Button == nullptr)
{
problemLoading("'btnChara.png'");
}
else
{
Button->setPosition(Vec2(sprite->getPosition().x + sprite->getContentSize().width * scaleRate / 2 + origin.x, visibleSize.height + origin.y));
Button->setAnchorPoint(Vec2(1.0,1.0));
Button->setScale(3.0);
this->addChild(Button, 1);
}
まず、setAnchorPoint()についてですが、
これは画像位置の基準となるポイントを設定する関数ですね。
デフォルトでは、アンカーポイントは中心(0.5, 0.5)の位置にあり、これを左下にするには(0, 0)、右上にするには(1, 1)と設定します。
今回は画像の右上を、背景の右上に合わせたいので、(1.0 , 1.0)、すなわち、画像のアンカーポイントを右上に設定しています。
次に背景画像の右上の座標を調べる必要があるのですが、
getContentSize()でspriteのサイズがわかりますが、
これはsetScale()で拡大する前の値になっていました。
なので、getContentSize()の値に拡大率を計算式に入れることで、見事に位置が合いました。
あとは、ちょうど良い感じで画像の大きさを調整。
もう少し大きくしても良いかな?
用意したアイコンを全部配置して、バランスを取ってみたいと思います。