在cocos2d中有没有人知道如何集中精灵?现在,我有一个精灵移动到你在屏幕上触摸的地方。问题是精灵与左下角对齐。这意味着,如果你只是在底部稍微触摸一下,精灵就会向上移动而不是向下移动。提前谢谢!
这是我的代码......
(BOOL) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *) event {
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView: [touch view]];
[mainSprite do:[MoveTo actionWithDuration:0.5 position:ccp(point.x, 480 - point.y)]];
return YES;
}
答案 0 :(得分:1)
Cocos2D中精灵的默认转换锚点是精灵的中心,所以它应该移动,使精灵的中心最终在你现在拥有的触摸位置。你有没有改变精灵的变换锚?
我唯一能想到的是,如果你的mainSprite是另一个CocosNode的子节点,那么你可能需要使用这种方法将触摸坐标转换为节点空间:
- (CGPoint)convertToNodeSpace:(CGPoint)worldPoint;
父节点上的....但是,我怀疑这是问题所在。对不起,如果这是无益的。
编辑:OP,如果你读到这个,你使用的是哪个版本的Cocos2D?我相信0.8(目前在svn主干中)改变了锚定的工作方式;为了将来的参考,其他人可能会知道你在做什么。
答案 1 :(得分:0)
我搞定了!对于任何想要知道的人都是代码...
[mainSprite setTransformAnchor:ccp(24.0, 64.5)];
24是精灵宽度的一半
64.5是精灵高度的一半