BlueParticles::BlueParticles(cocos2d::Vec2 position, std::string img, cocos2d::Vec2 powerDirection, float power) : m_power(power), m_area(cocos2d::Rect(0,0,0,0)), m_direction(powerDirection.getNormalized()) { setCameraMask(4); setPosition(position); init(); this->setTexture(img); }
/** * @desc 指定された頂点座標群から、指定されたベクトル方向における最も離れた頂点を求める * @param 頂点座標群 * @param ベクトル方向 * @return 頂点座標 */ cocos2d::Vec2 CCollisionData::getFarthestApexInDirection(const cocos2d::Vec2 &position, const std::vector<cocos2d::Vec2> *pApexs, const cocos2d::Vec2 &direction) const { // 頂点座標群がなければ位置座標を返す if(pApexs == NULL) return position ; // 誤差を抑えるために方向ベクトルを正規化する cocos2d::Vec2 vec = direction.getNormalized() ; // 暫定戻り値座標と、その頂点までの長さを最初の頂点で登録する cocos2d::Vec2 result = (*pApexs)[0] ; float maxLength = (*pApexs)[0].dot(vec) ; // 登録されている全ての頂点と比べる for(cocos2d::Vec2 apex : (*pApexs)){ float length = apex.dot(vec) ; if(maxLength < length){ maxLength = length ; result = apex ; } } return result ; }