Cocos2d-x 3.0で視点を変更する | 坂道で

坂道で

ゆるめ

今日は久しぶりにプログラミングのお話です。

最近、Cocos2d-xなるゲーム制作フレームワークに触れています。
ちなみにバージョンは3.0です。正式リリースがつい最近ありましたね。
情報も多くない上に、そもそもC++が苦手なんですが、なんとかぼちぼちやっています。

このタグでは、備忘録を兼ねて、Cocos2d-xについて学んだことを掲載していきたいと思います。
あやふやな知識で頑張りますので、間違いがあってもご愛嬌ということでお願いします。

まず今回は、視点操作。

以前のバージョンでは
"[cocos2d-x] CCCamera を使用してスターウォーズのオープニングシーンを再現"
こんな感じで視点操作ができたらしいですが、3.0からはカメラが独立したクラスとして用意される事になってます。
使えそうなのはActionCameraクラスとその派生のOrbitCameraクラスですね。たぶん。

OrbitCameraについてはまだ扱い方が理解できてないので、ここではActionCameraについてです。
こっちは使い方が簡単で、
まず、
void startWithTarget(Node* target)
というメソッドが用意されているので、カメラを使いたくなったSceneやLayerのインスタンスを引数としてこのメソッドを呼び出します。
その後、
void setEye(const kmVec3 &eye)
で視点の位置を設定するだけです。

フリックイベントに合わせて視点が変わるサンプルを作成しました。

記事の下部に、ソースコード(HelloWorld.h, HelloWorld.cpp)をまるごと載せました。
9割方、自動生成されたコードですね。
変更点としては、
"void HelloWorld::changeCameraAngle(cocos2d::Touch *touch, cocos2d::Event *unused_event)"メソッドの追加と、"bool HelloWorld::init()"メソッドの75行目以降への追加だけです。

上記の部分を3枚目のhoge.cppに抜き出しています。
視点変更は、cameraのgetEye()の結果に、フリックでの変化量を追加して、setEye(eye)しているだけです。
Cocos2d-xの視点操作、簡単ですね。



ただ、これ、常に中心方法を向いているので、斜めになるんですよね。
自分としては、正面を向いたままスライドして欲しかったんですが・・・うまく行きませんでした。
そのうちOrbitCameraにチャレンジしてみようと思います。

お疲れ様でした。


追記:
なんだかgistのスタイルシートが適応されていませんね。
また仕様が変わったようで。
プラグインの修正をします。

追記・追記:
修正完了。githubから帰ってくるjsonの仕様、ころころ変わります。