したがって、私の問題は、Weapon クラスのインスタンスをスケーリングすると (以下に示すように - self.scale = 0.35f)、アンカー ポイントが [0.0,0.0] ではなく [0.0,0.0] に設定されているように、左下隅に縮小されることです。 [0.5,0.5] で、スプライトの中心からスケーリングしたいだけです。いくつかの NSLog を入力しましたが、アンカー ポイントが [0.5,0.5] にあると表示されています。誰でもこれを理解するのを手伝ってもらえますか?
それを作成してアニメーション化するための私の Weapon クラスで:
-(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];
}