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;
}
関連記事
-
-
ゲスノート、事前予約開始しました♪
ついに出しますよ~、禁断!?のアプリ、ゲスノート! iOS事前予約:こちらをクリック♪
-
-
cocos2d-xでWin10(phone)用アプリ作成時のまとめ
私は現在、cocos2d-x ver 3.9を利用しています。 Win10アプリに移植する際、いく
-
-
新アプリ、i Cube Puzzle 各種端末リリースしました♪
初の3Dゲームパズル、i Cube Puzzleをリリースしました♪ ダウンロードはこ
-
-
iPhone用、ゲスノート リリースしました♪
ゲスノート!リリースしました♪ iOSの審査の問題でアイコンが異なったり名前がゲスノートか
-
-
wordPress始めました
今後のアプリ開発の話とかはここで書いていきたいと思います。 ぜひブックマークよろしくです♪
-
-
連射最強!?戦車で対戦「ねこたま」 レビュー♪
戦車で対戦「ねこたま」 ねこ戦車っぽいゲームと思ったら大間違い! 簡単そうで難しい!Le
