目前,我的课看起来像
@interface Character : SKNode
@property (nonatomic, assign) CGFloat walkingSpeed;
@实现字符
+(Character*)characterWithLevel:(BaseLevel *)level {
return [[self alloc] initWithLevel:level];
}
-(id)initWithLevel:(BaseLevel*)level {
if (self = [super init]) {
_sprite = [SKSpriteNode spriteNodeWithImageNamed:level.heroTexture];
_sprite.position = level.heroStartingPosition;
[self addChild:_sprite];
[level addChild:self];
}
return self;
}
问题是,当对关卡中的角色节点运行动作时,由于 SpriteNode 是动画节点,因此它不会做任何事情。我想知道你们将如何处理这些问题?
动作示例:
触摸事件:
CGPoint location = [[touches anyObject] locationInNode:self];
[character moveToPosition:location];
内部字符类
-(void)move {
[self runAction:[SKAction repeatActionForever:[SKAction animateWithTextures:[self walkFrames]
timePerFrame:0.1f
resize:NO
restore:YES]] withKey:@"moving"];
return;
}
这没有任何作用。我可以让它工作的唯一方法是如果 Character 是 SKSpriteNode 的子类。对 self.sprite 运行该操作也似乎有点骇人听闻,节点本身不会移动。
有什么建议么?