nirasan's tech blog

趣味や仕事の覚え書きです。Linux, Perl, PHP, Ruby, Javascript, Android, Cocos2d-x, Unity などに興味があります。

cocos2d-x

cocos2d-x で CCMenu のコールバックメソッドにパラメータを渡すには

はじめに CCMenu でメニューを作る際に、メニューアイテムの数だけコールバックメソッドを書いているのが間抜けすぎたので、メニューのコールバックメソッドにパラメータを渡す方法を調べた。 コード メニューアイテムの作成 "MenuScene"という名前のシーン…

cocos2d-x で時間を扱う

はじめに cocos2d-x で時間処理をしたかったので、 time.h を使う。 勘で "CCDate" でググったら、ライブラリ作っている人はいて、中で time.h 使っていたので、とりあえずこれでやってみる。 // 時間計算ライブラリの読み込み #include <time.h> // UNIX時間型 time</time.h>…

cocos2d-x で新しいフォントを使う

はじめに 新しいフォントを買って、cocos2d-x で使うところまで試したメモ。 フォントの購入 1000 OpenType Fonts | MacAppware – Home of the best Mac optimizer, Mac fonts, bundles and more を買ってみました。 使い方は、http://applech2.com/archives…

cocos2d-x でオブジェクトが消えたときのエフェクトをパーティクルで実装する

はじめに ゲームを作っていて、敵をたおしたりパズルのブロックを消したりしたときにエフェクトをつけたくなったら、「CCParticle〜」というクラスで簡単に実装ができます。 参考サイト http://wonderpla.net/blog/engineer/cocos2dx-ccparticlesystem/ http…

cocos2d-x でステージごとの設定をシングルトンオブジェクトで保持する

はじめに ゲームを作っていて、一つのシーンで複数のレイヤーを扱っているとき、ステージごとの設定などレイヤーをまたがって同じ値を参照できるようにしたかった ので、cocos2d::CCDirector を参考に設定用のシングルトンオブジェクトを作ってみた 設定用オ…

cocos2d-x で scene 作成時に引数を渡せるようにする

遷移先の scene 作成時に、scene の状態を指定するために引数を渡せるようにしました。 scene に渡した引数は、初期化メソッドに引き渡されて、実装時に自由に扱えるようにします。 引数付きで CCScene* を作成するメソッド宣言のためのマクロを宣言する Sce…

cocos2d-x で関数ポインターを使ってレイヤー間の連携をする

はじめに cocos2d-x でゲームを作るときに、タイマーの表示やスコアの表示など、きまりきった機能を別レイヤーにまとめて整理したいと考えました。 そこで、タイマー切れの処理やスコア更新処理など、レイヤーとレイヤーの間で連携をとるために、schedule_se…

MacBook Pro かってやったことメモ

KeyRemap4MacBook ダウンロード元 https://pqrs.org/macosx/keyremap4macbook/index.html.ja コマンドが遠いので、コントロールをコマンドにする Change Control_L Key (Left Control) Control_L to Command_L (except Terminal, Virtual Machine, RDC) エス…

cocos2d-x で Box2D を使う 〜 回転ジョイントで物体を空中にピン留めする

はじめに cocos2d-x と Box2D のテスト引き続き。 回転ジョイントを使って、物体を背景にくっつけて、空中にピン留めします。 やること これまで通りに物体を作成し、背景要素とジョイントします。 参考サイト http://www.iforce2d.net/b2dtut/joints-revolu…

cocos2d-x で Box2D を使う 〜 スワイプで物体を動かす

はじめに cocos2d-x と Box2D のテスト引き続き。 物体をスワイプすると、その方向に移動するようにします。 やること タッチ開始から終了の間の移動量を計算し、物体に力として与えます。 削除フラグが立ってたら物体を削除 GameScene.cpp private: CCPoint…

cocos2d-x で Box2D を使う 〜 衝突判定

はじめに cocos2d-x と Box2D のテスト引き続き。 物体同士が衝突したときに削除するような処理を追加します。 やること 衝突イベントのリスナークラスを作成し、衝突したら削除フラグをたてる。 物体の削除処理で、画面外に出たものだけでなく、削除フラグ…

cocos2d-x で Box2D を使う 〜 複数の物体を扱う

はじめに 前々回、前回から引き続いて、Box2Dで複数の物体を扱ってみます。 タップ時に物体をタップしたら上にはねるのはそのままですが、物体以外の箇所をタップしたら新しい物体が作成されるようにしました。 また、物体が画面外に出た場合、削除する処理…

cocos2d-x で Box2D を使う 〜 物体の移動と力を与える

はじめに 前回の続きで、物体の移動と、物体への力を与える処理を試してみます。 タッチの有効化 GameScene::init に追記してタッチの有効化をする GameScene.cpp // タッチ有効化 setTouchEnabled(true); setTouchMode(kCCTouchesOneByOne); タッチ時に物体…

cocos2d-x で Box2D を使う 〜 重力のある空間と地面と物体を作る

はじめに Box2D上に地面と物体をひとつ作成するサンプルです。 下記の参考書籍からBox2Dを使用したゲームのコードを抜粋し、ゲームロジックなどをのぞいて記載してみたいと思います。 参考書籍 cocos2d-x入門作者: 清水友晶出版社/メーカー: リックテレコム…

cocos2d-xでJSONを使う

cocos2d-xはあんまり関係ないですが、C++でJSONを扱うライブラリ picojson の使い方。 まとまった設定なんかを扱うのに使いやすそうです。 使用準備 https://raw.github.com/kazuho/picojson/master/picojson.h からファイルをコピーしてきて Classes の下に…

cocos2d-x で CCCallFuncND

cocos2d-x で任意の関数を任意のデータを引数として実行する CCCallFuncND を実行するサンプル。 軽くググってもサンプルが出てこなかったのでメモ。 呼び出し側 CCCallFuncND* f = CCCallFuncND::create(this, callfuncND_selector(GameScene::HelloND), (v…

cocos2d-x のアクションのテスト〜弾を飛ばす

cocos2d-x のアクションのテスト。 シューティングなどの弾を飛ばす。 ラベルオブジェクトを作って、移動させ、移動完了時に削除する。基本のシーンの作成は下記URLを参照。 http://nirasan.hatenablog.com/entry/2013/09/23/124822 void GameScene::bombTes…

Parse の Cloud Code を試す

はじめに cocos2d-x で Parse を試した流れで、Parse のアプリケーションホスティング的なサービスの Cloud Code を試してみた。 参考サイト https://parse.com/docs/cloud_code_guide ツールのインストール curl -s https://www.parse.com/downloads/cloud_…

cocos2d-x から Parse を使う

はじめに cocos2d-x から Parse の REST API 経由でユーザー登録とログインをしてみるテスト。 参考書籍 Cocos2d‐x開発のレシピ―iOS/Android対応作者: 松浦晃洋,齊藤建二,古木映治出版社/メーカー: 秀和システム発売日: 2013/06メディア: 単行本この商品を含…

cocos2d-xでなぞって消すパズル

cocos2d-x修行第三弾。ポコパンが面白いので、据え置きパズルで同じ色のブロックをなぞって消すゲームの実装です。 ブロックは六角形のものを想定して、"上"・"下"・"右上"・"右下"・"左上"・"左下"の六方向に辺が接しているブロックを選択できます。できた…

cocos2d-xで図形の描画

空のシーンの作成 "PROJECT_NAME" の "Classes" を右クリックして "New File" で "C and C++" の "C++ Class" を選択して "GameScene" クラスを作成 GameScene.h を以下の通りに #ifndef __GameScene__ #define __GameScene__ #include "cocos2d.h" USING_NS…

cocos2d-xでサメガメ

cocos2d-x修行第二弾。据え置きパズルで同じ色のブロックを消すSameGameの実装です。できたコードはこちら。 https://github.com/nirasan/SameGame-cocos2dxテトリスではブロックを置くフィールドの座標を左上起点にしたところ、cocos2d-xの画面の座標が左下…

cocos2d-x と Xcode でテストがエラーになるときの対応

「Undefined symbols for architecture i386」とか「linker command failed with exit code 1」とかでテストがエラーになるときは、元プロジェクトのビルドを先にしてから、テストプロジェクトの実行をすると良いようです。具体的には、このエラーが発生した…

cocos2d-xでテトリス

はじめに 「cocos2d-x 入門」を一通り写経してみたので、練習のためにcocos2d-xでテトリスを作ってみました。 参考サイト http://www13.plala.or.jp/kymats/study/game_other/SPACE_TETRIS/st1.html 完成したソースコード https://github.com/nirasan/tetris…

Cocos2d-x + Xcode でユニットテストをする

はじめに http://wonderpla.net/blog/engineer/Cocos2d-x_TDD/ このサイトで Cocos2d-x で TDD を試す手順をわかりやすく解説していてためになった。 例示しているコードも実際的で参考になったが、自分には高度すぎたので、簡単なコードで試してみた。 プロ…

Cocos2dxの自分用まとめ

タッチイベントの有効化 初期化 /* CCScene::init で実行 */ // タッチの有効化 setTouchEnabled(true); // シングルタップの場合 setTouchMode(kCCTouchesOneByOne); // マルチタップの場合 setTouchMode(kCCTouchesAllAtOnce); シングルタップ時に呼び出さ…

「cocos2d-x入門」をEclipseで試したらはまったこと

はじめに リックテレコム出版「cocos2d-x入門」(http://www.amazon.co.jp/cocos2d-x%E5%85%A5%E9%96%80-%E6%B8%85%E6%B0%B4-%E5%8F%8B%E6%99%B6/dp/4897979226)は主に、MacでXCodeを使ったcocos2d-xの入門をまとめた本です。 自分はすぐに使える環境がLinu…

UbuntuにCocos2d-xをインストールしてAndroidアプリ開発環境の作成

環境 Ubuntu: 11.10 Eclipse: 4.2.1 Android SDK: 20.0.1 Android NDK: r9 Cocos2dx: 2.1rc0-x-2.1.3 はじめに EclipseとAndroid SDKはインストール済みだったので省略。 Android NDKのインストール AndroidでC/C++を扱うツールのインストール。 ダウンロー…