小弟想做一个效果,一张卡牌绕x轴旋转,上部向屏幕里旋转,下部向屏幕外旋转,做出一种近大远小的感觉,现搜索论坛里相关帖子得到如下三个方案,实验发现效果不理想,也可能是小弟资历太浅,请大神赐教
第一种:
CCCamera* ca = hero1->getCamera();
float caX,caY,caZ;
ca->getEyeXYZ(&caX, &caY, &caZ);
ca->setEyeXYZ(caX, caY+50, caZ);
第二种:
float ra = 30;
float i = sinf(ra) * CCCamera::getZEye();
float j = cosf(ra) * CCCamera::getZEye();
hero1->getCamera()->setEyeXYZ(0, i, j);
第三种:
CCActionInterval * orbitcamera = CCOrbitCamera::create(1, 1, 0, 0, 30, 45, 0);
前两种都是使用setEyeXYZ的方法,可能是换汤不换药,但小弟实在参透不了。。。
自己顶一下,求大神回复啊
sprite->setRotation(90);
Director::getInstance()->setProjection(Director::Projection::_2D);
sprite->runAction( RepeatForever::create(OrbitCamera::create(2,1, 0, 0, 360, 0, 0)));
这个效果如果设成3d的 那么最好的效果是在屏幕中心,如果不在中心,就要计算离中心的角度,不然效果不理想
我记得是有关于3d特效的一些api的,你可以挨个试试
http://www.cocos2d-x.org/reference/native-cpp/V2.2.3/df/d51/classcocos2d_1_1_c_c_waves3_d.html%url%
CCWaves3D,CCFlipX3D等等