C++11以上

Cocos2d-xでStaticクラスのメソッドやフリー関数をコールバックに指定するマクロ

staticなメソッドとかフリー関数をバインドするには以下のマクロを使用します。 // 任意の位置に以下を定義する #define CC_CALLBACK_S_0(__selector__, ...) std::bind(__selector__, ##__VA_ARGS__) #define CC_CALLBACK_S_1(__selector__, ...) std::bind…

Cocos2d-xで画像を任意の色で点滅させる(3.x系)

Cocos2d-xで画像を点滅させるには、Blinkを使います。このBlinkの動作は、画像を「表示」⇔「非表示」動きをやってくれます。ただ、自分の好きな色で点滅などは出来ません。画像(Sprite)に弾がヒットした時に一瞬白く点滅する等の2Dゲームに割とよくある表…

Cocos2d-xで2点間の距離・角度を取得する(3.x系)

タイトルの通りですが、何故かCocos2d-xの2.x系で説明されている古めの記事しかなったので新しい(と言っても相当前ですが)3.x系での書き方の紹介です。 2.xと3.xではメソッド名や関数の位置が全然違うので少し書き方が違います。ただ、古いメソッドなどが…

Cocos2d-xでバーチャルパッド(スティック操作)を実装する

今回は、Cocos2d-x(ver. 3.17.1)でバーチャルパッド(スティックキー)を実装したいと思います。 PSやXboxなどでおなじみの360°方向の入力ができるスティックキーです。 実際に実装するとこんな感じになります。 よくコントローラが画面の下部に表示されてい…

Cocos2d-x 3.17.1で円と矩形(長方形・角度あり)の衝突判定

タイトルにCocos2d-x(2D用のゲームエンジン)でと書きましたが考え方自体は普遍的な円と矩形(長方形)の当たり判定の処理についてです。と、言っても条件式式が結構難しい(当方には説明が難しい)ため解説は以下のサイトが分かりやすくまとまっていますの…

Cocos2d-xでルール画像を使ってシーントランシジョンする(シェーダー使用)

Unityだと以下のように紹介されている、ルール画像を用いたシーンの遷移エフェクトをCocos2d-xで実装してみたいと思います。 tsubakit1.hateblo.jp まずこんな感じのグレースケールのマスク画像を使用します。 画面遷移はこんな感じになります。 「マスク画…

Cocos2d-x 3.17.1のcmakeでスタティックライブラリを作成してビルドを高速化する

はじめに FirebaseをAndroidに追加するときに思ったのですが、Cocos2d-xのAndroid環境は本当に地獄ですね… 少しGradleやCMakeist.txtを編集するとフルビルドになってCocos2d-x丸ごとリコンパイルになって時間がすごくかかります。 少し前に、3.17でcmakeが推…

Cocos2d-x 3.17.1でlib-genコマンドが削除されたけどWin32プロジェクトのビルドを高速化する

あらかじめCocos2d-xのコアの部分をコンパイルしてDLLを作成し、ビルド時間を高速化する話は以前、こちらで書いたのですが、なんと3.17.1からlib-genコマンドが削除されてしまいました。従って、最新版のCocos2d-xだとlib-genコマンドによる事前ビルドが不可…

Cocos2d-x 3.17.1でハッシュ計算を行う(MD5・SHA-256)

ゲームでデータが改ざんされていないかどうかを確かめるためにデータのハッシュ値を取って照合する手法があり、ハッシュ計算が必要になった時に使用するライブラリですが、最近のCocos2d-xにはすでにハッシュ計算用のライブラリが入っています。従って以前の…

Cocos2d-xのWin32プロジェクトでFirebaseの匿名認証してみる

タイトルの通りですが、Win32上でも匿名認証が普通にできるので方法を紹介したいと思います。 前回書いた以下の記事でWin32のプロジェクトが設定済みの状態を想定します。 takachan.hatenablog.com そして、以下のページにある「デスクトップ版の Firebase …

Cocos2d-xのWin32プロジェクトにFirebaseを設定する

Android向けにアプリ開発していますが、プログラムを書くときはWin32プロジェクトで作成しているのでモバイルプラットフォーム向けのライブラリとか機能は特別な分岐コードを書かないといけないのですが、FirebaseはAndroid, iOSは対応していますがWindowsと…

Cocos2d-xでLabelやTextの色を部分的に変更する

Cocos2d-xでラベルの色を途中で変更する場合以下のサイトが出てきます。 masahirosaito.hatenablog.com Cocos2d-xのバージョンが3.17.1の今でも大抵このサイトの通りで問題ないですが、文字列中の任意の単語の色を一括で変更したいといった場合、元の文字列…

C#とC++で任意の型をスターリンソートする

ネットで少しだけ話題になったネタ系ソートアルゴリズムのスターリンソート(というかフィルター?)をC#とC++で実装してみようと思います。 スターリンソートとは? C#の実装 オリジナルの実装 少し改造してみる C++で実装 オリジナルの実装 少し改造してみ…

C++でstd::mapにキーが存在するか調べる(C++20含む

C++の連想配列クラスのstd::mapの、テーブル内にキーが存在するかどうか確認するための方法の紹介です。 ものすごーく古くからあるクラスなので若干クセがあります。 C++20ならcontainsメソッドを使う C++20であればmapにcontainsというメソッドが追加されて…

Cocos2d-xでテクスチャの簡易ヒットテスト(ver3.17.1対応版)

Cocos2d-xでテクスチャの簡易ヒットテスト(ver3.17.1で確認済み) 今回は、四角いSpriteのテクスチャー内において、色がついている場所がタッチされたかそうでないかを判断する方法を紹介したいと思います。 絵にすると以下のような感じになります。テクスチ…

C++で時間計測 & ストップウォッチを実装する

C++11から「std::chrono」という時間を表す型がいくつか追加になっています。 従来の時間取得方法からずいぶん使いやすい形で機能が提供されています。 ある区間の時間を図るには以下のように記述します。 #include <iostream> #include <chrono> void Foo() { // 開始・終了時</chrono></iostream>…