草庐IT

SKShapeNode

全部标签

swift - 检测节点是否触摸帧的最佳方法

我和斯普里特基特建立一些游戏,其中包括作为斯科沙普诺德球。我创建了一个类来定义球及其属性(包括skphysicsbody)。球应该在屏幕上运行,框架是屏幕边界(使用edgeloopfrom:self.frame)。我还创建了一个位于屏幕顶部的路径节点。现在,我想这样做,如果一些球到达了框架的顶部边界,那么一些函数将执行。我读了一些关于它的文章,我不确定什么是正确的方法,如果使用contactBitMask或者有其他更好的选择。如果正确的方法是通过contactBitmask-我必须为balls节点设置一个结构,还是可以在类中设置它?谢谢! 最佳答案

ios - SKNode 框架不正确?

这是我的NumberTile类的构造函数:classNumberTile:SKShapeNode{vartileColorArray=NSArray(objects:"#996666","#a65959","#b34d4d","#bf4040","#cc3333","#d92626","#e61919")//redinit(xPos:NSInteger,yPos:NSInteger){super.init()letsize=CGSize(width:40,height:40)self.path=CGPathCreateWithRect(CGRect(origin:CGPointZero

swift - 创建 SKShapeNode 的子类

classColorRectangle:SKShapeNode{varwidth:CGFloat!varheight:CGFloat!varrectColor:UIColor!convenienceinit(rectOfSize:CGSize,colorOfRectanglerectColor:UIColor){super.init(rectOfSize:rectOfSize)self.width=rectOfSize.widthself.height=rectOfSize.heightself.rectColor=rectColorself.fillColor=rectColorse

swift - 在 Apple 的游戏代码项目模板中解包选项

在Xcode中创建新游戏项目时创建的Apple代码的小示例中,GameScene有几个函数使用了我没有遇到过的展开模式,而且我看不出它的意义-ifletn=self.spinnyNode?.copy()as!SKShapeNode?{...code...}两个问题-(1)这是否危险,&(2)为什么不使用更常见的模式-ifletn=self.spinnyNode?.copy()as?SKShapeNode{...code...}我在SO或Google上找不到与此相关的任何内容... 最佳答案 让我们分解原始代码行:ifletn=sel

ios - 如何精确检测何时触摸 SKShapeNode?

我正在使用Swift和SpriteKit。我有以下情况:这里,每个“三角形”都是一个SKShapenode。我的问题是,我想检测何时有人触摸了正在触摸哪个三角形的屏幕。我假设所有这些三角形的碰撞框都是矩形,所以我的函数返回所有触摸的碰撞框,而我只想知道实际触摸了哪个碰撞框。有什么方法可以让碰撞箱与形状完美匹配,而不是矩形?这是我当前的代码:overridefunctouchesBegan(touches:Set,withEventevent:UIEvent?){lettouch=touches.firstlettouchPosition=touch!.locationInNode(se

ios - SpriteKit : How to draw custom shapes without SKShapeNode?

从Apple的SKShapeNode类引用以及许多开发人员那里,我听说使用SKShapeNode绘制您想要经常在View上绘制的自定义形状是一个坏主意,因为它的性能很差。这是真的,一个带有一些自定义形状的简单应用程序使我的CPU占用率高达80%,并使用了大约80MB的内存(在设备上更好一些)。那么,我如何在不使用SKShapeNode的情况下绘制箭头等形状,因为我喜欢使用bezierpaths绘制的想法,因为我不需要关心显示大小。如何在不降低质量的情况下绘制带有纹理的箭头,因为当我移动我的触摸来拉伸(stretch)箭头时它会拉伸(stretch)我的图像。使用SKShapeNode执

swift - 如何绘制两种不同颜色的空心圆?

我非常熟悉绘制填充的createEllipseInRect形状节点,但我想知道是否有办法以编程方式执行此操作。我想要一个从中心split的圆圈,两边都有两种不同的颜色。我没有代码,因为我不知道从哪里开始。somethinglikethis非常感谢帮助。 最佳答案 您可以尝试使用SKCropNode,这允许您只显示每个圆的一半。有关此示例,请参见下面的代码。classGameScene:SKScene{overridefuncdidMoveToView(view:SKView){anchorPoint=CGPointMake(0.5,

ios - 如何围绕自己的轴旋转 SKShapeNode?

我想围绕其轴旋转一个SKShapeNode(我认为在SpriteKit这样的框架中很容易完成此任务)。形状旋转,但围绕一个似乎在屏幕外的轴旋转...对这里出了什么问题有什么想法吗?importSpriteKitclassSquare:NSObject{//thisgetscreatedandinitializedlater...varshape:SKShapeNode?=nil//…funcanimateMe(){letaction=SKAction.rotateByAngle(CGFloat(M_PI),duration:1)self.shape.runAction(action,c

ios - WatchOS3中SKShapeNode添加手势

我可以在SpriteKit场景中添加手势。但无法向我在场景中的节点之一添加手势。此外,touchesBegan方法在WatchKit中不可用。所以在我的界面中添加了gestureRecognizer并将其传递到SpriteKit场景中。但这导致将panGesture添加到整个场景而不是我的节点。有没有办法只将手势添加到我的一个节点? 最佳答案 您永远不会向节点添加手势。您只能向任何可以识别手势的东西添加手势。在UIKit中,这些是UIView在Watchkit中,这些是WKInterfaces现在你想在Watchkit中做的是,当手

ios - 如何与其父 SKShapeNode 一起旋转 SKLabelNode?

当按下屏幕时,使用以下代码创建的球:varn=1funcaddBall(_x:CGFloat){letnumShape=SKShapeNode(circleOfRadius:30)numShape.name="ball"numShape.position=CGPoint(x:x,y:frame.maxY-40)numShape.physicsBody=SKPhysicsBody(circleOfRadius:30)numShape.fillColor=SKColor.whitenumShape.physicsBody?.density=0.1numShape.physicsBody?.