3d 魚的旋轉角度

enum FishSiwmDirection
{
    SWIM_FRONT = -1,
    SWIM_BACK = 1,
};
void HelloWorld::update(float dt)
{

    int  _direction = SWIM_BACK;//設置魚是向玩家游來 還是背離玩家遊
	Vec2 _offset = m_sprite->getPosition() - _old;//魚的新舊座標差

 	float _radianX = atan2(_offset.y, _offset.x);//旋轉x軸的弧度
 	float _angleX = CC_RADIANS_TO_DEGREES(_radianX);//旋轉x軸的角度
    
    //使魚的x軸旋轉只能在50和-50度之間
	if (abs(_angleX) > 90)
	{
		if (_angleX>0)
		{
			_angleX = 180 - _angleX;
		}
		else
		{
			_angleX = -180 - _angleX;
		}

		
	}
	if (_angleX > 50)
	{
		_angleX = 50;
	}
	if (_angleX < -50)
	{
		_angleX = -50;
	}
    
    

    //計算y軸旋轉角度
	float _radianY =  atan2(_offset.x, _direction * _offset.y);
	float _angleY = CC_RADIANS_TO_DEGREES(_radianY);
	
   
    //設置魚的旋轉角度
    log("%f", _angleY);
    m_sprite->setRotation3D(Vec3(-_angleX,  _angleY ,m_sprite->getRotation3D().z));


    //設置魚的大小(遠近效果)
    float _s;
    if (_direction == SWIM_FRONT)
    {
        
        _s = 90 - _angleY;
        _s = _s / 90/3 +0.7;
        m_sprite->setScale( _s);

    }
    else
    {
        _s = 90 - _angleY;
        if (_angleY < 0)
        {
            _s -= 360;
        }
        
        
        _s = _s / 90/3 + 1.3;
    }
    m_sprite->setScale( _s);
    
    //設置老座標爲新座標
	_old = m_sprite->getPosition();

}

發佈了215 篇原創文章 · 獲贊 8 · 訪問量 68萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章