我在中间有一个圆圈,我需要朝与我触摸并从播放器出来的方向相反的方向发射子弹,我写了以下代码但没有任何反应privatefuncfire(position:CGPoint){letbullet=SKShapeNode(circleOfRadius:2)bullet.strokeColor=SKColor.darkGraybullet.fillColor=SKColor.darkGraybullet.physicsBody=SKPhysicsBody(circleOfRadius:2)letposX=(position.x)*-1letposY=(position.y)*-1letpos=
我一直在使用Swift的内置绘图工具绘制一些形状,用直线绘制简单的路径。我注意到的一个异常情况是,如果您想要一条已填充但边缘没有线条描边的路径,则它会在没有抗锯齿的情况下呈现并且外观粗糙。相反,默认情况下,一条线总是呈现平滑。有一个选项可以打开抗锯齿,但这也没有什么区别。我可以让描边与填充颜色相同,但这意味着边缘从定义形状的点位置向外扩展。//createsshapenodetocontainpathletmyTriangle=SKShapeNode()//declarespathobjectletmyPath=CGPathCreateMutable()//movestostartin
我在我的游戏中添加了一个老式的高分输入屏幕,用户可以在其中点击每个字母来输入他们的名字。每个字母、符号或短语('DEL'、'SP'等)都是一个SKLabelNode并且很难点击','和'.'。字符和一些符号。通过通常的touchesBegan检测每次点击为了让延迟更容易,我计划在每个字母后面放置一个更大的节点并更新touchesBegan以检测标签本身或其他标签上的触摸,在这种情况下只需使用子节点触摸(将是字母或短语)。在我这样做之前,我想知道是否有一种简单的方法来实现我想要的,可以通过检测最近的SKLabelNode来实现。 最佳答案
对于由自定义SKAction完成的运动,我想要一种比传统方程式创建的曲线更强大的缓动类型。如何使用SKKeyFrameSequence在SKAction中驱动动画?SKKeyFrameSequence创建我想要的曲线类型,如下所示:letsequence=SKKeyframeSequence(keyframeValues:[0.00,0.05,0.25,0.70,0.85,0.95,0.98,1.00],times:[0.00,0.10,0.15,0.20,0.23,0.28,0.50,1.00])sequence.interpolationMode=.splinestride(fro
我已经在SpriteKit中开发了一款名为UpandDowntheRiver的纸牌游戏。这是一个相当简单的纸牌游戏,带有一些动画,例如发牌和打牌的Action。根据调试器工具,它通常非常高的能源利用率并且平均接近每秒170次唤醒。(如下图)SpriteKit游戏的典型特征是什么?一个简单的纸牌游戏应该消耗这么多能量吗?如果不是,我应该寻找什么来减少能源使用?注意:这是在macOS上运行的,但是该游戏是跨平台的(即iOS和macOS)。我在iOS设备上运行得到了类似的结果。 最佳答案 当SpriteKit运行时,它会不断更新屏幕(通常
我试图了解如何在SpriteKit中应用着色器,因此我制作了以下来自指南的着色器并进行了一些改编(http://battleofbrothers.com/sirryan/understanding-shaders-in-spritekit):voidmain(){vec4val=texture2D(u_texture,v_tex_coord);if(val.a==1.0){gl_FragColor=vec4(1.0,1.0,1.0,1.0);}else{gl_FragColor=val;}}这个简单着色器的想法是将Sprite节点的每个非透明像素转换为白色。着色器与我的sprite节点
这里是新编码器,我编写了一个用于拖动/throw对象的代码,我想知道如何制作它以便只有屏幕的一部分可以用于触摸,即只能触摸屏幕的下半部分.这是我的游戏场景代码,我使用的是Swift2.0。importSpriteKitvarsprite=SKSpriteNode!()vartouchPoint:CGPoint=CGPoint()vartouching:Bool=falseclassGameScene:SKScene{overridefuncdidMoveToView(view:SKView){self.physicsBody=SKPhysicsBody(edgeLoopFromRect
我在游戏中播放声音时遇到了一个令人烦恼的问题,但似乎无法通过AVAudioPlayer获得任何输出。最初这是作为一个类设置的,但是当它不起作用时,我尝试对声音输出进行硬编码,只是为了检查那里是否存在问题。它仍然没有用,我尝试了几个不同的文件来排除有问题的音频文件或格式。正在检索URL,但audioPlayer似乎只是没有输出声音。我已经阅读了一些关于类似问题的帖子并摆弄了系统声音设置,但没有任何区别。有人建议模拟器在某些情况下无法输出声音,但我不认为这是这种情况。letmyFile=NSURL(fileURLWithPath:NSBundle.mainBundle().pathForR
我正在尝试制作一款类似FlappyBird的游戏,并且必须让我的背景无限循环。我在网上找到了一些教程,但它对我不起作用,我也不知道为什么。到目前为止,这是我的代码varBackground=SKSpriteNode()vartxtBG=SKTexture(imageNamed:"Background")vartxtLand=SKTexture(imageNamed:"Ground")varGround=SKSpriteNode()varmoving:SKNode!//CenaoverridefuncdidMove(toview:SKView){scene?.anchorPoint=CG
我正在制作iOS游戏,需要知道如何获取uitapgesturerecognizer的点击位置。我不想想使用touchesBegan、touchesEnded等。我还需要知道如何检查用户是否双击了sprite节点。我已经设置了uitapgesturerecognizer,我只需要知道如何找到触摸的位置并查看它是否与sprite节点的位置相同。非常感谢任何帮助! 最佳答案 假设您的sprite是从UIView继承的类(我认为它们通常是),手势识别器的处理函数应该如下所示。funchandleDoubleTap(gestureRecogn