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将节点移回其原始位置。我已经编辑了我的答案,加入了这样做的代码。