SpriteKit 目标 c 节点仅在 x 轴上移动

Posted

技术标签:

【中文标题】SpriteKit 目标 c 节点仅在 x 轴上移动【英文标题】:SpriteKit objective c node movement only on x axis 【发布时间】:2015-12-16 20:59:23 【问题描述】:

我正在使用 SriteKit 制作简单的游戏,球只是上下弹跳,当它落下时你需要将棋盘放在下面以便球弹回,现在我可以将棋盘放在屏幕上的任何位置,但我想放在特定的 y 轴上,所以板子只能在 x 轴上移动。我的问题是:我做错了什么,我需要改变什么,所以它按我想要的方式工作? P.S 对不起我的英语不好。

这是我的一小部分代码:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
    /* Called when a touch begins */
    for (UITouch *touch in touches) 
        CGPoint location = [touch locationInNode:self];
        SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"board"];
        sprite.xScale = 0.5; 
        sprite.yScale = 0.5;
        sprite.position = location; 
        sprite.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:sprite.frame.size];  
        sprite.physicsBody.dynamic = NO;

        SKAction *delay = [SKAction waitForDuration:2];    
        SKAction *remove = [SKAction removeFromParent];      
        SKAction *actionSequence = [SKAction sequence:@[delay,remove]];      
        [sprite runAction:actionSequence];
        [self addChild:sprite];
    

【问题讨论】:

我在这里看到的,是你在屏幕上放了一个精灵,它什么都不做,然后消失,这是目前正在发生的事情吗? @Knight0fDragon 球在那块板上弹跳,就像乒乓球游戏一样,唯一的区别是您不需要用手指滑动板子,只需轻点即可 是的,我给了你一个答案,你触摸 x 上的任意位置,paddle 出现在触摸 x 位置,指定 y 位置 @Knight0fDragon 非常感谢,现在它就像我想要的那样工作:) 【参考方案1】:

您需要通过 y 轴设置位置

CGPoint touchlocation = [touch locationInNode:self];
CGPoint location = CGPointMake(touchlocation.x,100);  //where 100 is the spot on the y axis you want to stay on

【讨论】:

以上是关于SpriteKit 目标 c 节点仅在 x 轴上移动的主要内容,如果未能解决你的问题,请参考以下文章

使用 SpriteKit 的球滚动和转动效果

使用 spritekit 和目标 c 更改英雄的外观

spritekit 如何在两个不同的节点上转换两个 SKAction

从父级(Sprite Kit)目标 C 中移除节点

检测 SpriteKit 中节点特定区域的触摸

如何从两个图像目标c sprite节点制作闪烁按钮