*

cocos2d-xのSprite3Dのタッチを判定する方法

公開日: : 最終更新日:2016/01/31 ゲーム開発



 
↑可愛い?(笑)
今3Dゲームをcocos2d-xで挑戦してるのですが、
3次元表示された画像をタッチされたのを特定するにはどうすればいいか・・・
そもそも3D作るならUnity使えよって言われかねないのですが、
cocos2d-xでどこまでできるかやってみたかった・・・
めんどくて既に後悔中。

話は戻してまずはSprite3Dにタッチイベントを追加し、呼ばれてきたSprite3Dが
自分か判断する手順です。
下の例はSprite3Dにタッチイベントを飛ばしてますが、画面のタッチから
どれがタッチされたかループでチェックしてもいいですよ。
うーん、3Dの座標管理ってムズイわぁ。

bool GameSceneLayer::onTouchBegan(cocos2d::Touch* touch, cocos2d::Event* event)
{
Point point = touch->getLocation();
if (_mode != eGSL_GAME_START) return false;

// タッチされたものか確認
Sprite3D *sp = (Sprite3D *)event->getCurrentTarget();
auto size = Director::getInstance()->getWinSize();
Ray ray;
Vec3 nears(point.x, point.y, -1.0f);
Vec3 fars(point.x, point.y, 1.0f);

// カメラアングルから実際どこがタッチされたのか取得
cam3d->unprojectGL(size, &nears, &nears);
cam3d->unprojectGL(size, &fars, &fars);

ray._origin = nears;
ray._direction = fars – nears;

// タッチされたboxだった
if (ray.intersects(sp->getAABB()) == true)
{

//タッチされたものが判定できたのでここからやりたい処理
return true;
}
return false;

}

関連記事

1_640x960

ゲスノート、事前予約開始しました♪

ついに出しますよ~、禁断!?のアプリ、ゲスノート! iOS事前予約:こちらをクリック♪

記事を読む

1_640x960

新アプリ、i Cube Puzzle 各種端末リリースしました♪

初の3Dゲームパズル、i Cube Puzzleをリリースしました♪ ダウンロードはこ

記事を読む

cap

連射最強!?戦車で対戦「ねこたま」 レビュー♪

戦車で対戦「ねこたま」 ねこ戦車っぽいゲームと思ったら大間違い! 簡単そうで難しい!Le

記事を読む

180x180

iPhone用、ゲスノート リリースしました♪

ゲスノート!リリースしました♪ iOSの審査の問題でアイコンが異なったり名前がゲスノートか

記事を読む

win10phone

cocos2d-xでWin10(phone)用アプリ作成時のまとめ

私は現在、cocos2d-x ver 3.9を利用しています。 Win10アプリに移植する際、いく

記事を読む

no image

wordPress始めました

今後のアプリ開発の話とかはここで書いていきたいと思います。 ぜひブックマークよろしくです♪

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

android
Lineの着せ替え、クリエイターズ審査が開始されました♪

知らない間に着せ替えまでできるようになりました! 早速、オカメを

180x180
iPhone用、ゲスノート リリースしました♪

ゲスノート!リリースしました♪ iOSの審査の問題でアイコン

cap
連射最強!?戦車で対戦「ねこたま」 レビュー♪

戦車で対戦「ねこたま」 ねこ戦車っぽいゲームと思ったら大間違

1_640x960
ゲスノート、事前予約開始しました♪

ついに出しますよ~、禁断!?のアプリ、ゲスノート! iOS事

cap
1本引くだけ!仕分けてスッキリ!脳トレ ラインゲーム レビュー♪

仕分けてスッキリ!脳トレ ラインゲーム 電車でも手軽に出来る

→もっと見る


  • にほんブログ村 ゲームブログへ
PAGE TOP ↑