我正在使用SpriteKit编写一个iOS游戏,其中包含许多带标签的球。我通过构建一个带有2个子节点的父SKSpriteNode来构建这些“rollingBalls”:a)一个SKShapeNode(实际的圆形)b)和一个SKLabelNode(标签)球将在整个屏幕上移动,在二维空间中与彼此和其他物体相互作用,并且完全取决于预期的物理特性(想想台球)。但如果可能的话,我希望标签不随父级一起旋转,以便始终保持易于阅读。最简单的方法是什么?标签不应该是容器的子元素吗?还有其他方法可以将它与ballShapeHook吗?或者我可以在标签上设置一些属性等吗?这是我现在得到的:doublebal
我在浏览Apple的SpriteKit文档时发现了一个非常有用的功能,我可以在编写UI时使用它。问题是我无法让它工作。请查看此页面并向下滚动到“调整Sprite大小”-AppleDocs我从字面上复制了图像尺寸并使用了相同的代码以防我做错了什么。但我总是以拉伸(stretch)的图像结束,而不是保持相同比例的正确“端盖”。我指的是这段代码:SKSpriteNode*button=[SKSpriteNodespriteWithImageNamed:@"stretchable_button.png"];button.centerRect=CGRectMake(12.0/28.0,12.0/
我正在尝试创建一个随机怪物的Sprite,我的图像存储在主包中引用的文件夹中。NSString*bundlePath=[[NSBundlemainBundle]bundlePath];NSString*resourceFolderPath=[NSStringstringWithFormat:@"%@/monsters",bundlePath];NSArray*resourceFiles=[[NSFileManagerdefaultManager]contentsOfDirectoryAtPath:resourceFolderPatherror:nil];NSIntegerrandomF
为什么SKSpriteNodenode.frame.size.width小于node.size.width?这是示例代码,您可能需要插入自己的图片-(void)DrawRect:(SKSpriteNode*)node{SKShapeNode*rect=[[SKShapeNodealloc]init];CGMutablePathRefmyPath=CGPathCreateMutable();CGPathAddRect(myPath,nil,node.frame);rect.path=myPath;rect.lineWidth=1;rect.strokeColor=[SKColorwhit
我一直在尝试使用sprite套件,为我的想法构建原型(prototype)。我一直在使用SKPhysicsJointPin将一串物理体连接在一起,以制作一根绳子(实际上更像是自行车链条,但它已经足够好了)。场景中还有一些球,当我点击它们时,它们会掉落。这导致以下情况:但是,当我丢更多的球时,链条似乎无法处理它,并“断裂”:这是一个movieshowingthephenomenon这是怎么回事?该文档从不建议SKPhysicsJointPin具有有限的最大强度或弹性或类似物。这是sprite套件中的“错误”,还是我使用了错误的方法? 最佳答案
我使用SpriteKit(使用Objective-C)在XCode中创建了一个相当简单的(此时,实验性的)“游戏”。我知道如何手动创建一个SKSpriteNode对象并将其添加到SKScene-但我有点想做相反的事情-我在XCodeSceneKitGUI本身内部创建了Sprite(并给它起了一个名字),现在我想在我的代码中检索它。在之前使用XCode的经验中,您可以通过声明一个@propertyUIOutlet[etc]然后将其连接为IB/StoryboardUI内的引用socket来实现此目的-但我找不到任何类似的方法来在内部执行此操作SpriteKit用户界面。我可以创建一个属性(
我想像这样使用SKSpriteNode在swift中创建翻转效果effect.我试试这个solution但在水平旋转之前我们可以看到垂直旋转。我只想要像HTML/CSS示例中那样的水平旋转。 最佳答案 使用SKSpriteNode做翻转的解决方案:funcflipTile(node:RectSprite){letflip=SKAction.scaleXTo(-1,duration:0.4)node.setScale(1.0)varchangeColor=SKAction.runBlock({node.texture=SKTextur
使用SpriteKit、Swift2、Xcode我试图在调用节点后更改其中一个节点的大小,即使它不是唯一的(有很多)。用不那么令人困惑的术语来说,我试图在不在初始声明中执行的情况下更改节点的大小。这是我尝试过的:self.childNodeWithName("player")?.size.width=10但是这不起作用,因为childNodeWithName返回一个节点而不是SKSpriteNode。由于节点无法访问“大小”,因此该解决方案不起作用。我也尝试过使用self.childNodeWithName("player")?.setScale(0.5)现在的问题是我无法将其作为数字
如何获得移动的SKSpriteNode的轨迹(我将推导出一个点)?我会使用它的physicsBody.velocity值吗?或者我可以使用另一个变量吗?基本上,我试图获得移动节点将通过的几个点。谢谢! 最佳答案 如果您使用物理来移动它,您应该能够使用物理体的速度值加上它所连接的节点的位置。如果你想得到与速度矢量在同一直线上的点,你需要x位置和y位置,然后将t*velocity.dx添加到x位置,并将t*velocity.dy到y位置,其中t只是节点到达该点的任意时间。可能值得注意的是,这是节点的点速度。如果设置为在直线以外的路径(例
我有一个使用关卡生成器创建的SKSpriteNode。我需要使用CGPath创建完全相同的形状。self.firstSquare=childNodeWithName("square")as!SKSpriteNodevartransform=CGAffineTransformMakeRotation(self.firstSquare.zRotation)letrect=CGRect(origin:self.firstSquare.position,size:self.firstSquare.size)letfirstSquareCGPath:CGPath=CGPathCreateWith