さて、私が何をしているのかがわかるようにコードを投稿し、最後に質問をします。
私の武器クラスでは、それを作成してアニメートします。
-(id) initWithWeapon
{
// Load the Texture Atlas sprite frames, this also loads the Texture with the same name.
CCSpriteFrameCache *frameCache = [CCSpriteFrameCache sharedSpriteFrameCache];
[frameCache addSpriteFramesWithFile:@"weapon1.plist"];
if ((self = [super initWithSpriteFrameName:@"Gun_image.png"])) {
// create an animation object from all the sprite animation frames
CCAnimation* anim = [CCAnimation animationWithFrame:@"Gun" frameCount:30 delay:0.08f];
// run the animation by using the CCAnimate action
CCAnimate* animate = [CCAnimate actionWithAnimation:anim];
CCRepeatForever* repeat = [CCRepeatForever actionWithAction:animate];
[self runAction:repeat];
}
self.scale = 0.35f;
return self;
}
これは、アニメーションを処理する上記のメソッドです。
// Creates an animation from sprite frames.
+(CCAnimation*) animationWithFrame:(NSString*)frame frameCount:(int)frameCount delay:(float)delay
{
// load the weapon's animation frames as textures and create a sprite frame
NSMutableArray* frames = [NSMutableArray arrayWithCapacity:frameCount];
for (int i = 0; i < frameCount; i++)
{
NSString* file = [NSString stringWithFormat:@"%@%i.png", frame, i];
CCSpriteFrameCache* frameCache = [CCSpriteFrameCache sharedSpriteFrameCache];
CCSpriteFrame* frame = [frameCache spriteFrameByName:file];
[frames addObject:frame];
}
// return an animation object from all the sprite animation frames
return [CCAnimation animationWithFrames:frames delay:delay];
}
したがって、私の問題は、Weaponクラスのインスタンスをスケーリングすると(上記のように-self.scale = 0.35f)、アンカーポイントが[0.0,0.0]ではなく[0.0,0.0]に設定されているように、左下隅にスケールダウンすることです。 [0.5,0.5]そして私はそれをスプライトの中心からちょうどスケーリングしたいです。いくつかのNSLogを入力しましたが、アンカーポイントは[0.5,0.5]にあると表示されます。誰かが私がこれを理解するのを手伝ってもらえますか?