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 に答える