gpt4 book ai didi

objective-c - Spritekit 操纵杆

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:54 25 4
gpt4 key购买 nike

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

我正在使用 TheSneakyNarwhal's drop in Joystick class它使用以下方法:

 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];
}

但是,只要操纵杆的 velocity.x 大于 0(向右移动),它就会从头开始调用该方法,实际上不会播放完整的动画。

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

最佳答案

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

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


创建一个 BOOL 属性:

@property (nonatomic) BOOL animationRunning;

当您的操纵杆值表明您希望播放器正确运行时,您调用动画方法:

[self runRightAnimation];

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

-(void)runRightAnimation {

if(animationRunning == NO) {

animationRunning = YES;

// your animation code...
}
}

请记住设置您的 animationRunning = NO; 并在操纵杆不再处于所需位置时停止动画。

关于objective-c - Spritekit 操纵杆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31667967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com