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);
}
예제 #2
0
/**
 *  @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 ;
}