- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的程序中,我有一个名为 addObstacle 的方法,它创建一个带有 SKPhysicsBody 和向左速度的矩形 SKShapeNode。
func addObstacle(bottom: CGFloat, top: CGFloat, width: CGFloat){
let obstacleRect = CGRectMake(self.size.width + 100, bottom, width, (top - bottom))
let obstacle = SKShapeNode(rect: obstacleRect)
obstacle.name = "obstacleNode"
obstacle.fillColor = UIColor.grayColor()
obstacle.physicsBody = SKPhysicsBody(edgeLoopFromPath: obstacle.path!)
obstacle.physicsBody?.dynamic = false
obstacle.physicsBody?.affectedByGravity = false
obstacle.physicsBody?.contactTestBitMask = PhysicsCatagory.Ball
obstacle.physicsBody?.categoryBitMask = PhysicsCatagory.Obstacle
obstacle.physicsBody?.usesPreciseCollisionDetection = true
self.addChild(obstacle)
obstacle.runAction(SKAction.moveBy(obstacleVector, duration: obstacleSpeed))
}
在一个名为 endGame 的单独方法中,我想淡出屏幕上当前存在的所有障碍物。所有障碍对象都是私有(private)的,这使得访问它们的属性变得困难。如果屏幕上只有一个,我通常可以通过它的名字访问它。但是,当我说 childNodeWithName("obstacleNode")?.runAction(SKAction.fadeAlphaBy(-1.0, duration: 1.0))
时,只有一个“障碍”消失了;其余的仍然完全不透明。有这样做的好方法吗?提前致谢 (:
最佳答案
你可能会选择:
self.enumerateChildNodesWithName("obstacleNode", usingBlock: {
node, stop in
//do your stuff
})
可以找到有关此方法的更多信息 here .
在这个例子中,我假设您已经在场景中添加了障碍物。如果不是,则代替场景,在障碍物的父节点上运行此方法。
还有一点……SKShapeNode 在很多情况下都不是高性能解决方案,因为它需要至少一个绘制 channel 才能由场景渲染(它不能像 SKSpriteNode 那样批量绘制)。如果在您的应用程序中使用 SKShapeNode 不是“必须”,并且您可以使用 SKSpriteNode 切换它们,我强烈建议您这样做,因为性能。
如果您对所有 Sprite 使用相同的图集和相同的混合模式,SpriteKit 可以在单个绘制 channel 中渲染数百个节点。 SKShapeNodes 不是这种情况。关于此的更多信息 here .搜索有关此主题的 SO,有一些关于这一切的有用帖子。
关于swift - 访问多个 SKShapeNodes 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31886050/
我的应用程序中有一个轮子。我需要检索它停止的切片/楔形的值。 这段代码: print(wheelScene.atPoint(CGPoint(x: wheelScene.frame.midX,
我有一个 SKShapeNode,如果满足特定条件,它需要将它的每个角都变圆。阅读下面链接提供的答案,这似乎很容易,因为我会简单地使用 |= 来圆角需要舍入的加角(4x if 语句)。 How to
我正在尝试用图像/图案填充 SKShapeNode,但仍然不成功。 你能帮我解决这个问题或者给我一个替代方案吗? 我想创建一个可碰撞的自定义形状(来自任何 SpriteKit 类型),并填充图案图像。
我正在使用 SKShapeNodes 绘制一条线。这条线不断地“生长”,或者说总是向上移动。当用户点击屏幕时,线条应以 45 度角向右或向左改变方向。它会这样做,但是由于某种原因,当它改变方向时,线中
在我的应用程序中,我有两个凹形SKShapeNode,即nodeA和nodeB,nodeA在屏幕上固定,而nodeB可以由用户手指在屏幕上拖动。 NodeA 需要能够检测 NodeB 是否与它重叠。首
我正在尝试为要遵循的节点创建 CGPath,但是当我尝试使用 608_hd_best_practices_for_building_spritekit_games 中的操作和常量幻灯片中定义的 SKS
我有一个 SKShapeNode,它有多个 SKSpriteNode 作为其子节点,这些子节点位于其中心周围的不同位置。我还旋转了 SKShapeNode,这实际上旋转了它的所有子节点。但是,当我循环
我正在开发一个小游戏,我必须匹配一些颜色。我只使用 SKShapeNodes;但我似乎无法让这段代码工作。我只得到“不同颜色”的打印结果。 func didBegin(_ contact: S
我无法让 SKShapeNode 的子类接受初始化程序。为了解决这个问题,我尝试按照此处发布的示例 Adding Convenience Initializers in Swift Subclass
我正在尝试将渐变纹理应用于从路径创建的 SKShapeNode,以便线条从纯色变为透明。这适用于 SKSpriteNode,但我无法让它在 SKShapeNode 上工作。有谁知道这个问题的解决方案?
我想在另一个正方形里画一个正方形;但我无法以正确的方式定位第二个。根据第一个平方坐标进行定位可以做什么? var tileBackground = SKShapeNode(rectOfSize
我用来生成行的代码是这样的: func populate(num: Int) { for var i = 0; i < num; i++ { let lines = Line
如何对没有实例方法初始化器的 SKShapeNode 进行子类化?我能想到的唯一方法是: + (id)withColor:(UIColor *)aColor radius:(CGFloat)aRadi
我正在开发一个应用程序,我正在根据用户手指的触摸来绘制线条。一旦收到触摸结束事件,该行将转换为最后一条路径。当收到新的触摸开始事件时,将绘制一条名为“当前路径”节点的新线。我为具有相反接触位掩码的两条
我打开了 spritekit 应用程序示例并添加了这段代码 override func didMoveToView(view: SKView) { /* Setup your scene he
最近我一直在创建一个游戏,我在屏幕上放了圆圈。但是,我注意到这些圆形不是圆形,而是椭圆形。 y 轴被拉伸(stretch),x 轴被收缩。为了弄清楚这个问题,我现在正在尝试用一个矩形进行调试。我使矩形
我可以在一个 SkShapenode 中有一条具有多种线宽和颜色的路径吗?例如 我可以在一个节点中添加三个具有不同填充和描边大小边框的不同颜色的圆圈吗? 最佳答案 skshapenodes 真的不应该
我创建了一个名为“Character”的 SKShapeNode 子类,我尝试使用 rectOfSize 对其进行初始化,但是由于必须使用指定的初始化程序,我不能这样做。 我一直在阅读有关此机制的信息
在我的简单游戏中,我需要在下一步发生之前移除所有 SKShapeNodes。这是我的代码: for child in self.children(){ if(child==SKShapeNod
有没有办法围绕某个任意点旋转 SKShapeNode,特别是矩形? 我在 gameScene 类的开头声明了我的 SKShapeNode var bladeTouch = SKShapeNode()
我是一名优秀的程序员,十分优秀!