我对Cocos2d很陌生,我正在努力实现向上和向下扩展精灵。
我正在使用CCEaseInOut
来执行任务。
我的代码段如下所示:
barrel setAnchorPoint:ccp(0.5,0.5)];
id scaleUpAction = [CCEaseInOut actionWithAction:[CCScaleTo actionWithDuration:.35 scaleX:1.5 scaleY:1.5] rate:1.0];
id scaleDownAction = [CCEaseInOut actionWithAction:[CCScaleTo actionWithDuration:.35 scaleX:1.0 scaleY:1.0] rate:1.0];
CCSequence *scaleSeq = [CCSequence actions:scaleUpAction, scaleDownAction, nil];
[barrel runAction:scaleSeq];
barrel
的类型为CCNode
。
考虑到中心周围可能会发生缩放,我试图将anchorPoint
设置为(0.5,0.5)
。但是,这似乎没有帮助。
我见过类似的问题:CCSprite is moved when using CCScaleTo or CCScaleBy。不幸的是,在该链接中没有解决问题的答案。
如果有人能指出我正确的方向,那就太好了。
注意:提及桶对象被用作box2d
对象可能会有用。那问题可能来自那里吗?
干杯!
注意:我的代码中已经有以下内容:
NSObject* bodyUserDataA = (__bridge NSObject*)contact->GetFixtureA()->GetBody()->GetUserData();
if ([bodyUserDataA isKindOfClass:[ODPPBarrel class]]) {
barrel = (ODPPBarrel *)bodyUserDataA;
}
答案 0 :(得分:0)
除非必须要求,否则请务必不要更改节点的锚点。默认情况下,所有节点的anchorpoint都设置为0.5。
id scaleUpAction = [CCScaleTo actionWithDuration:.35 scale:1.5];
id scaleDownAction = [CCScaleTo actionWithDuration:.35 scale:1.0];
CCSequence *scaleSeq = [CCSequence actions:scaleUpAction, scaleDownAction, nil];
现在,如果桶是CCSprite类型并在b2Body的userdata字段中使用,那么: 从box2d世界获取身体(例如myBody)。
CCSPrite *tmpSPrite = (CCSPrite *)myBody->getUserData;
if(tmpSprite)
[tmpSPrite runAction:scaleSeq];