2d-x写个旋转

现在地球能旋转了。 但是那个房子 还不能跟着旋转。。

而且 房子 还是会变大变小的!

好吧 - - :6:

什么情况,楼主把问题和需求描述清楚。。。


想实现房子跟 下面那个地球 一起旋转,而且房子可以跟随的圆球变大变小的效果!

现在那个绿色草坪已经可以自己旋转了,但是我在SD-X里面还没有加入房子!

楼主你可以在一个Node上面添加房子和草坪,然后对这个Node进行旋转或者放大缩小动作,就能达到效果了。

呃。。这个不是绕着一个圆形旋转就行了么

大致你就是需要求得那些屋子的坐标,我给你一些伪代码:
float x,y;
float angle;//旋转角
float radius;//半径

x = cos(angle) * radius + cx;//假设cx,cy是圆心
y = sin(angle) * radius + cy;

要记得,对应坐标求得后,你的屋子自身也需要按合适角度旋转哦

这个应该可以通过继承样条动画来实现。
提供一个个人修改方向的片段:
.h
virtual void updatePosition(cocos2d::Point& newPos);
.cpp
void MCardinalSplineTo::updatePosition(Point& newPos){
if(mRotateType <= CS_ROTATE_TYPE_BOTTOM){
float angle = atan2(newPos.y - _previousPosition.y, newPos.x - _previousPosition.x);
switch(mRotateType){
case CS_ROTATE_TYPE_BOTTOM:{
_target->setRotation(90 + 180/3.14159angle);
break;
}
case CS_ROTATE_TYPE_TOP:{
_target->setRotation(90 - 180/3.14159
angle);
break;
}
case CS_ANTI_ROTATE_TYPE_TOP:{
CCLOG(“CS_ANTI_ROTATE_TYPE_TOP”);
_target->setRotation(270 - 180/3.14159angle);
break;
}
}
}else{
float angle = atan2(_previousPosition.y - newPos.y, _previousPosition.x - newPos.x);
switch(mRotateType){
case CS_ANTI_ROTATE_TYPE_TOP:{
_target->setRotation(270 - 180/3.14159
angle);
break;
}
}
}
CardinalSplineTo::updatePosition(newPos);
}

有那么麻烦吗? 把房子直接add到地球上就好了啊