1

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

2 回答 2

1

Cocos2D 中精灵的默认转换锚点是精灵的中心,所以它应该移动,使得精灵的中心最终到达您现在所拥有的触摸位置。你改变了精灵的变换锚点吗?

我能想到的唯一另一件事是,如果您的 mainSprite 是另一个 CocosNode 的子节点,那么您可能需要使用以下方法将触摸坐标转换为节点空间:

- (CGPoint)convertToNodeSpace:(CGPoint)worldPoint;

...在父节点上。但是,我怀疑这是问题所在。抱歉,如果这没有帮助。

编辑: OP,如果您阅读此内容,您使用的是哪个版本的 Cocos2D?我相信 0.8(目前在 svn 主干中)改变了锚定的工作方式;以供将来参考,了解您正在使用的内容可能对其他人有用。

于 2009-05-17T08:02:18.593 回答
0

我让它工作了!对于任何想知道这里的人都是代码......

[mainSprite setTransformAnchor:ccp(24.0, 64.5)];

24 是精灵宽度的一半

64.5 是精灵高度的一半

于 2009-05-17T16:10:19.723 回答