狂ったお茶会のlog

後で起きる自分のためのメモ

Cocos2d-x: 画像を立体的に横にぐるぐる回す

やりたいこと

掲題のとおり

やったこと

OrbitCamera を使う
よくわからない引数が多いが

OrbitCamera * OrbitCamera::create(float t,      // 期間(秒)
                        float radius,           // 開始半径
                        float deltaRadius,     // 半径変化量
                        float angleZ,          // 開始角度(Z)
                        float deltaAngleZ,     // Z角度変化量
                        float angleX,          // 開始角度(X)
                        float deltaAngleX)     // X角度変化量

sprite がすでに create されてるとして、以下のようにする
(Repeat したくなければ Repeat は別に要らない)

int turnNum = 4;
auto turnAction = Repeat::create(OrbitCamera::create(1.0f, 1, 0, 0, 360, 0, 0), turnNum);
sprite->runAction(turnAction);

この動画のようになる
1秒に1回360度回転

f:id:dormouse666:20161225231217g:plain

(最初に一瞬出てきちゃってるのはスプラッシュ画像)

なお、上記の 360 を 180 にすると

auto turnAction = Repeat::create(OrbitCamera::create(1.0f, 1, 0, 0, 180, 0, 0), turnNum);

180度回転を繰り返す感じになる。微妙

f:id:dormouse666:20161225231819g:plain

その他

以下のように Zアングル を 90 から開始すると、真横から回転が始まり真横で終わる。

auto turnAction = Repeat::create(OrbitCamera::create(1.0f, 1, 0, 90, 360, 0, 0), turnNum);

f:id:dormouse666:20161225231903g:plain

以下のように Zアングル を 180 から開始すると、真後ろから回転が始まり真後ろで終わる。

auto turnAction = Repeat::create(OrbitCamera::create(1.0f, 1, 0, 180, 360, 0, 0), turnNum);

f:id:dormouse666:20161225231924g:plain

以上

URL

Cocos2d-x: OrbitCamera Class Reference