我创建了以下spritekit节点:SKSpriteNode*megadeth;megadeth=[SKSpriteNodespriteNodeWithImageNamed:@"megadeth_rocks.png"];megadeth.name=@"awesome";并添加滑动手势如下:-(void)didMoveToView:(SKView*)view{UISwipeGestureRecognizer*recognizerUp=[[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(handleSwip
我有一个SKSpriteNode对象,它有一系列要永远运行的Action。这些Action很简单,可以先移到最右边,然后再回到最左边。当用户在应用中输入一些值时,我需要反转方向,即。e.如果Sprite向右移动,我需要让它向左移动,反之亦然。我怎样才能做到这一点? 最佳答案 我会这样做:(在swift中)funcmovament(){ifisMovingRight==true{runAction(SKAction.sequence([SKAction.moveByX(10,y:0,duration:0.05),SKAction.pe
如何让SKNode继续前进?我已经能够使用[SKActionmoveByX:y:duration:]使节点沿固定方向移动,但我希望它沿相对于其面向方向的方向移动.我希望让每个节点旋转45度,然后向前“走”50像素。看起来很简单,我就是找不到。 最佳答案 这将旋转,然后朝向您点击的位置-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event{for(UITouch*touchintouches){for(UITouch*touchintouches){CGPointloc
所以我在我的游戏中添加了一个暂停按钮,并且可以卡住和解冻View。但是,如果View当前被卡住,我希望它在屏幕上显示一条消息“暂停”。但如果我触摸我的暂停按钮,它不会显示标签。这真的很奇怪,因为我发现如果我将我的设备转到横向模式,就会出现“暂停”消息。(反之亦然,所以如果我在横向模式下触摸按钮并将设备转为纵向,则会出现暂停标签)谁能解决这个问题?顺便说一句:我也尝试了不同的方法来做到这一点,比如在场景开始时立即初始化暂停标签,并在需要时隐藏/显示它。这也没有用。我还尝试在更新方法中使用if语句来做到这一点(如果场景暂停=>显示暂停标签)这也没有用。我之前在这里和appledevforu
由于JSTileMap扩展了SKNode,您可以使用API像任何其他节点一样移动和动画化您的tilemap。但是,我不断收到这种奇怪的效果/故障...代码:_tiledMap=[JSTileMapmapNamed:@"Cloud.tmx"];if(_tiledMap){[selfaddChild:_tiledMap];}_tiledMap.position=CGPointMake(800,0);SKAction*scrollLeft=[SKActionmoveTo:CGPointMake(600,0)duration:4];SKAction*scrollRight=[SKActionm
我有什么:您点击一下,球就会移动到那个位置。屏幕上下水平分割。假设球在下方,您无法点击下方使其移动。您必须单击屏幕的顶部。这与上下翻转有关。我要做什么:x坐标根本没有改变。当球击中顶部时,它会改变方向并在没有点击的情况下返回删除UITouch位置变量上下撑杆系统撑杆一切都对你有帮助,非常感谢。-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event{/*Calledwhenatouchbegins*///SKAction*action=[SKActionrotateByAngle:M_PIduration:1];//[sp
如果我在更新方法中实现该方法,我想以秒为单位,它只在第一秒有效,然后它会不停地打印数字,而不会在打印下一个数字之前等待一秒钟;我不明白为什么会这样-(void)countinSeconds{SKAction*count=[SKActionwaitForDuration:1];SKAction*time=[SKActionrunBlock:^{timex++;}];SKAction*print=[SKActionrunBlock:^{NSLog(@"%i",timex);}];[selfrunAction:[SKActionsequence:@[count,time,print]]];}
当我调用runAction:completion:?SKSpriteNode的函数,并传入SKActionrunBlock操作,永远不会调用回调例程。 最佳答案 好吧,这可能是因为SpriteKit无法知道您的block何时真正停止影响相关节点。如果API设计得更好,也许它会为您提供一种从block中调用完成的方法,但事实并非如此。但是,您可以在自己的block中调用自己在完成block中调用的任何内容。编辑:是的,被调用者(在本例中为SpriteKit)确实知道您的block何时结束执行,但您的block可能会执行延迟调用,这将进
SpriteKit中的SKEmitterNode可让您更改粒子属性,但您如何为粒子设置动画,使它们像该视频的0:12标记一样闪烁?https://www.youtube.com/watch?v=wYy2G0lVTAM这可能吗?我们尝试快速将颜色从黄色变为白色(Sprite原本是白色的),但这并没有达到预期的闪烁效果:letcolorizeYellow=SKAction.colorize(with:UIColor.yellow,colorBlendFactor:1.0,duration:0.2)letcolorizeReset=SKAction.colorize(withColorBle
我是SpriteKit的新手。我有一组节点需要一起移动到每个节点的不同点,并且在所有节点的动画完成后我想做其他事情。我以前用UIView组件做这个。[UIViewanimateWithDuration:completion:]block提供了我需要的东西。但在SpriteKit中,每个节点都有自己的Action并自行设置动画。我找不到Sprite节点的任何block动画。所以我无法控制动画完成。希望,我清楚。提前致谢。 最佳答案 有几个SKAction类方法可能很有趣。第一个是runBlock:,第二个是group:(这允许并行运行