Ios 使精灵移动到特定位置,具体取决于精灵';她目前的处境如何?

Ios 使精灵移动到特定位置,具体取决于精灵';她目前的处境如何?,ios,if-statement,ios7,sprite-kit,sprite,Ios,If Statement,Ios7,Sprite Kit,Sprite,我觉得我的标题很混乱,但我真的不知道如何命名。这是我目前的代码: - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { SKAction *moveNodeRight = [SKAction moveByX:-209.0 y:0.0 duration:0.85]; [_squirrelSprite runAction: moveNodeRight withKey:@"changeside"]; //_squirre

我觉得我的标题很混乱,但我真的不知道如何命名。这是我目前的代码:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
SKAction *moveNodeRight = [SKAction moveByX:-209.0 y:0.0 duration:0.85];
 [_squirrelSprite runAction: moveNodeRight withKey:@"changeside"];
//_squirrelSprite.xScale = -1.0;

if(_squirrelSprite.xScale == -1.0)
{
    _squirrelSprite.xScale = 1.0;
} else {
    _squirrelSprite.xScale = -1.0;
}
}
当我点击屏幕时,精灵移动到一个新位置(X:-209.0,Y:0.0)。新位置在当前位置的左侧。当我第二次点击屏幕时,精灵只会离屏幕越远越好

我想要的:我对我目前拥有的很满意,但是当精灵处于新位置(X:-209.0,Y:0.0)时,我希望第二次轻触将其返回到原始位置。我认为它看起来像上面的代码,但到目前为止没有任何工作。下面是它可能看起来像什么的想法。谢谢大家!

if(_squirrelSprite.position == the second position)
{
    _squirrelSprite.position = the first position;
} else {
    _squirrelSprite.xScale = the second position;
}

当用户点击屏幕时,这会将节点从一个位置移动到另一个位置。然后,当用户再次点击屏幕时,它会将节点移回原始位置

@interface MyScene()

@property SKSpriteNode *squirrelSprite;
@property BOOL atFirstPosition;
@property CGPoint firstPosition;

@end

@implementation MyScene

-(id)initWithSize:(CGSize)size
{
    if (self = [super initWithSize:size])
    {
        _firstPosition = CGPointMake(300, self.frame.size.height/2);
        _squirrelSprite = [SKSpriteNode spriteNodeWithColor:[SKColor blueColor] size:CGSizeMake(32, 32)];
        _squirrelSprite.position = _firstPosition;
        _atFirstPosition = YES;
        [self addChild:_squirrelSprite];
    }
    return self;
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    if (_atFirstPosition)
    {
        SKAction *moveNodeLeft = [SKAction moveByX:-209.0 y:0.0 duration:0.85];
        [_squirrelSprite runAction: moveNodeLeft withKey:@"changeside"];
    } else {
        _squirrelSprite.position = _firstPosition;
    }
    _atFirstPosition = !_atFirstPosition;
    _squirrelSprite.xScale *= -1.0;
}

@end
编辑: 这将使用SKAction将节点移回其原始位置

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    if (_atFirstPosition)
    {
        SKAction *moveNodeLeft = [SKAction moveByX:-209.0 y:0.0 duration:0.85];
        [_squirrelSprite runAction: moveNodeLeft withKey:@"moveleft"];
    } else {
        SKAction *moveNodeRight = [SKAction moveByX:209.0 y:0.0 duration:0.85];
        [_squirrelSprite runAction: moveNodeRight withKey:@"moveright"];
    }
    _atFirstPosition = !_atFirstPosition;
    _squirrelSprite.xScale *= -1.0;
}

谢谢,这看起来很棒!我要把它弄得乱七八糟,这样它才适合我当前的代码。你知道有没有办法像精灵最初移动时那样,将持续时间添加到精灵移动回原始位置的过程中?除此之外,它很完美,谢谢你。:)不客气。可以使用另一个SKAction将节点移回其原始位置。我已经编辑了我的答案,加入了这样做的代码。