如何居中对齐精灵?

时间:2009-05-17 07:07:11

标签: iphone cocoa-touch cocos2d-iphone center

在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;
}

2 个答案:

答案 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是精灵高度的一半