cocos2d-xの座標系でつまずいたのでメモ。

タッチイベントを取得する際に、getLocationInViewで判定していたらどうにも思いどおりの挙動にならない現象が起きた。(y座標が反転してしまう)

結論から言うと、getLocationInViewでなく、getLocationを用いれば、左下からの座標で取得できる。

 

調べると、基本的にcocos2d-xで用いられているのは、OpenGLの座標系となっていて、「左下」が原点らしい。

cocos2d-xのリファレンスを見ると、座標系を取得するメソッドとして、PointクラスのgetLocationとgetLocationInViewがある。

(以下リファレンスから引用)

Point getLocation()const

returns the current touch location in OpenGL coordinates

Point getLocationInView()const

returns the current touch location in screen coordinates

なるほど。OpenGLの座標系(左下)でとるか、画面の座標(左上)でとるかによってメソッドが分かれてるのか。

やっぱりリファレンスちゃんと見なきゃだめだなと思いました。