1 const CCPoint CCPointZero = CCPointMake(0,0); 2 switch(i) 3 { 4 case 0: 5 sprite->setAnchorPoint( CCPointZero ); 6 break; 7 case 1: 8 sprite->setAnchorPoint( ccp(0.5f, 0.5f) ); 9 break; 10 case 2: 11 sprite->setAnchorPoint( ccp(1,1) ); 12 break; 13 }
对应的效果:(0,0)在左sprite下角;(0.5,0.5)在sprite中心点;(1.0,1.0)在sprite右上角。
如果设置(0.5,1.0)则:(图上所画的绿点,就是sprite->setPosition的地方)
在XX项目中,为什么子弹的锚点要设置在(0.5,1.0)上呢?
如果设置在(0.5,0.5)那么子弹一开始就会露出一半,如果这时,控制它隐藏将增加程序的复杂度,位置-子弹的半个身位。
cocos2d-x action By To的区别;moveBy moveTo
先看一下by的英文解释:通过、经过;to的英文解释:到、向;第一次看引擎时确实,没看出两者的区别,今天看demo发现moveBy使用时用了reverse,moveTo没用,是不是moveBy的reverse是他特有的?看了看文档,果然moveTo没有reverse方法。
moveTo就是移动到某点,moveBy就是经过某点再原路返回。
1 CCActionInterval* actionTo = CCMoveTo::actionWithDuration(2, CCPointMake(s.width-40, s.height-40)); 2 CCActionInterval* actionBy = CCMoveBy::actionWithDuration(2, CCPointMake(80,80)); 3 CCActionInterval* actionByBack = actionBy->reverse(); 4 5 m_tamara->runAction( actionTo); 6 m_grossini->runAction( CCSequence::actions(actionBy, actionByBack, NULL));
同理其它action
今天在项目中,又看了一下MoveTo和MoveBy,我以前理解错了一些!CCMoveBy::actionWithDuration(2, CCPointMake(80,80));这里的ccp(80,80)不是像ActionTo中的一样(屏幕上的目标坐标点);这里是偏移量(80,80) ? 这里不是点吗? 对,它对于CCMoveBy是相对于CCNode原先的坐标点横坐标向右偏移80个像素,纵坐标也偏移80个像素。
1 CCActionInterval* actionTo = CCMoveTo::actionWithDuration(2, CCPointMake(s.width-40, s.height-40)); 2 CCActionInterval* actionBy = CCMoveBy::actionWithDuration(2, CCPointMake(80,80)); 3 CCActionInterval* actionByBack = actionBy->reverse(); 4 5 m_tamara->runAction( actionTo); 6 m_grossini->runAction( CCSequence::actions(actionBy, actionByBack, NULL)); 7 // m_grossini->runAction(actionBy);
8 m_kathia->runAction(CCMoveTo::actionWithDuration(1, CCPointMake(40,40)));
综上: CCMoveTO CCMoveBy
actionWithDuration中的ccp 移动到的坐标点 相对于CCNode现在的坐标点的偏移量
有无reverse 无(空方法) 有(可以轻松的做往返动作)
看来不亲自试试,光看很难掌握事物的全貌;虽然上面我也贴代码了,和现在贴的其实是一样的,但是就没去修改下试试,仅仅是看了看!今天修改游戏程序代码金币的动作时突然发现了To和By先前没意识到的区别。
本文出自:http://li-bonan.blog.163.com/blog/static/135564770201302515653653/
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
重点:
1、持续动作中设计to的是没有reverse函数的,而by是有reverse函数
2、by系列函数传递的是移动的向量,那么相对于原始点的移动方向是什么。其实传递的参数是一个CCPoint,实际移动的效果
是在x轴方向移动ccp的x坐标值大小,在y轴方向移动cpp的y坐标值大小