自己也写了几个贝塞尔曲线,但鱼的方向老是对不好,这个怎么解?多谢
用的是3D路径~
哥,能说明白 点吗?急求
刚想了下,他们用的是3d游戏,但我现在做的是2d的,不需要用到3d路径吧。我现在不知道鱼在游动的时候,方向怎么转
我们重写了个CCRBezierBy
void CCRBezierBy::update(float time)
{
if (m_pTarget)
{
float xa = 0;
float xb = m_sConfig.controlPoint_1.x;
float xc = m_sConfig.controlPoint_2.x;
float xd = m_sConfig.endPosition.x;
float ya = 0;
float yb = m_sConfig.controlPoint_1.y;
float yc = m_sConfig.controlPoint_2.y;
float yd = m_sConfig.endPosition.y;
float x = bezierat(xa, xb, xc, xd, time);
float y = bezierat(ya, yb, yc, yd, time);
CCPoint currentPos = m_pTarget->getPosition();
CCPoint diff = ccpSub(currentPos, m_previousPosition);
m_startPosition = ccpAdd( m_startPosition, diff);
CCPoint newPos = ccpAdd( m_startPosition, ccp(x,y));
CCPoint edss =ccpSub(newPos,currentPos);
float angleRadians =ccpToAngle(edss);
float angleDegrees = CC_RADIANS_TO_DEGREES(angleRadians);
m_pTarget->setRotation(-1.0f*angleDegrees-90.0f);
m_pTarget->setPosition(newPos);
m_previousPosition = newPos;
}
}
```
主要就是下面这段啦
CCPoint edss =ccpSub(newPos,currentPos);
float angleRadians =ccpToAngle(edss);
float angleDegrees = CC_RADIANS_TO_DEGREES(angleRadians);
m_pTarget->setRotation(-1.0f*angleDegrees-90.0f);
```
在这里设置精灵的角度,嗯,我们是初始造型是向下的, 所以这样算m_pTarget->setRotation(-1.0f*angleDegrees-90.0f);根据不同情况改下,应该就可以了