###前提・実現したいこと
クォータービューのゲーム開発を行っています。
クォータービューでクリックしたスクリーン座標をクォータービューのマップチップ座標に変換する方法がわかりません。
またスクリーン上に表示されたチップ番号を求める方法などわかる方がいましたらヒントを教えてもらいたいです。
概要
正方形の(x * y)チップ並べたタイルマップをZ軸で45度,x軸でX度傾けた
画面上潰れたひし形のクォータービューマップを2D上で表現しています。
これを画面のあるポイント(Px,Py)がクォータービューマップ上のどのチップを指しているかを調べたいです。
実装はcocos2d-xにて行っています。
試したこと
マップの変換行列の逆行列を掛け合わせると表現できるのかと考え、実装致しましたがうまくいきませんでした。
// Z軸の回転行列作成 Mat4 rMat1 = Mat4(); rMat1.rotateZ(45); // X軸の回転行列作成 Mat4 rMat2 = Mat4(); rMat2.rotateX(30); // 回転行列作成 Mat4 m = rMat1 * rMat2; // 逆行列作成 m.inverse(); // スクリーン上の座標 auto vec = Vec3(***); // 座標をマップ座標二変換 m.transformPoint(&vec); Size chipSize = Size(32,32); auto vpos = Vec2(floor(vec.x / 32),floor(-vec.y / 32));
もう少し具体的にお書きください。「スクリーン上に表示されたチップ番号」と言っても実装の仕方次第で当然変わります。