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();
}
3d 魚的旋轉角度
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.