先日紹介した「2点間の角度を求める」に続いて、ジョイスティックで取得したCCPointを元に、「2点間の距離」をcocos2dxで求める方法を紹介します。 例えば、ジョイスティックから導き出されるCCPointは、その位置によって、大きさが変わります。ジョイスティックをちょっと動かす、また大きく動かすその大きさで何かを行う時に使う時に利用できるでしょう。
2点間の距離を求める
高校で勉強をした平方根を利用します。 float型の場合、sqrtf()を利用します。 [c] //距離の調整 MovePoint = ccpSub(MovePoint, this->getPosition()); float tPP = abs(MovePoint.x2) + abs(MovePoint.y2);//adsは絶対値 float distance = sqrtf(tPP);
[/c]
上記のコードは絶対値を利用しているので、ジョイスティックのマイナスの動きの場合でも距離を算出できます。 これは「ピタゴラスの定理」というものらしく、求め方は色々あるみたいです。(pow()を使う)
【追記】 上記の方法以外にもccpDistance()を使えば、2点間の距離を求めることができます。 こちらの方が簡単ですね。
[c]
float distance = ccpDistance(MovePoint, this->getPosition());
[/c]