首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spritekit欢乐棒

Spritekit欢乐棒
EN

Stack Overflow用户
提问于 2015-07-28 05:26:12
回答 1查看 384关注 0票数 3

每当我改变操纵杆的方向时,我都会尝试执行我的玩家精灵的一些动画。

我使用的是TheSneakyNarwhal在Joystick课堂上的跌落,它使用以下方法:

代码语言:javascript
复制
 if (joystick.velocity.x > 0)
    {
        [self walkRightAnim];
    }
    else if (joystick.x < 0)
    {
        [self walkLeftAnim];
    }
    if (joystick.velocity.y > 0)
    {
        [self walkUpAnim];
    }
    else if (joystick.velocity.y < 0)
    {
        [self walkDownAnim];
    }
    if (joystick.velocity.x == 0 && joystick.velocity.y == 0)
    {
        [self idleAnim];
    }

My [self walkRightAnim];

    - (void)walkRightAnim {

        NSLog(@"%f", self.joystick.velocity.x);

        SKTexture *run0 = [SKTexture textureWithImageNamed:@"right1.png"];
        SKTexture *run1 = [SKTexture textureWithImageNamed:@"right2.png"];
        SKTexture *run2 = [SKTexture textureWithImageNamed:@"right3.png"];
        SKAction *spin = [SKAction animateWithTextures:@[run0,run1,run2] timePerFrame:0.2 resize:YES restore:YES];
        SKAction *runForever = [SKAction repeatActionForever:run];
        [self.player runAction:runForever];
    }

但是,每当操纵杆的速度在0以上(向右移动)时,它就会从一开始就一直调用该方法,而不会真正播放完整的动画。

只有当我停止使用操纵杆时,它才会播放整个动画。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-28 14:10:44

听起来好像你一遍又一遍地调用你的动画。这将阻止动画的实际播放超过前几帧。

创建一个BOOL,您将在动画第一次运行时设置它。随后对动画的调用将检查BOOL的状态,并确定动画是否已经在运行。当操纵杆不再指向正确时,您可以重置BOOL。

创建BOOL属性:

代码语言:javascript
复制
@property (nonatomic) BOOL animationRunning;

当您的操纵杆值指示您希望您的播放器正确运行时,请调用以下动画方法:

代码语言:javascript
复制
[self runRightAnimation];

在运行动画之前,将检查BOOL是否已经在运行:

代码语言:javascript
复制
-(void)runRightAnimation {

    if(animationRunning == NO) {

        animationRunning = YES;

        // your animation code...
    }
}

记得设置你的animationRunning = NO;和停止动画时,操纵杆不再在理想的位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31667967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档