我在浏览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
目前,我在Swift中的一个项目中遇到了一些麻烦。我想知道您是否可以像这样创建一个全新的Sprite节点:varspriteNode:SKSpriteNode=nodes(3)其中nodes是一个SKSpriteNodes数组,在索引号3处有一个对象。以前,我在Java工作过,我知道如果你要做这样的事情,它会简单地传递一个sprite节点变量的引用而不是创建一个全新的sprite节点,但我不确定这是否是swift中发生的事情。如果您无法通过这种方式创建新的Sprite节点,那么最好的创建方式是什么(在Java中,您只需创建一个新的Sprite节点并逐字复制其所有值)?