如何在没有 SKTexture 的情况下更改 didBeginContact 中的 SKSpriteNode 大小和颜色?

Posted

技术标签:

【中文标题】如何在没有 SKTexture 的情况下更改 didBeginContact 中的 SKSpriteNode 大小和颜色?【英文标题】:How to change SKSpriteNode size and colour in didBeginContact without SKTexture? 【发布时间】:2016-01-11 18:01:34 【问题描述】:

我一直在使用 SKTexture 通过以下方式在 didBeginContact 中更改 SKSpriteNode 颜色和大小。

if firstBody.categoryBitMask == spriteCategory && secondBody.categoryBitMask == enemyCategory    
     var newSprite = firstBody.node
     let newImage = SKTexture(imageNamed: "newSprite.png")
     (newSprite as? SKSpriteNode)?.size = newImage.size() //magic
     oldToNewSpriteAction = SKAction.setTexture(newImage)
     newSprite!.runAction(oldToNewSpriteAction)
 

现在我正在创建一个不带 SKTextures 的示例代码,按以下方式设置我的 SKSpriteNodes:

oldSprite = SKSpriteNode(color: SKColor.blueColor(), size: oldSpriteSize)
newSprite = SKSpriteNode(color: SKColor.BrownColor(), size: newSpriteSize)

如何在没有 SKTextures 的情况下更改 didBeginContact 中的精灵颜色和大小?

【问题讨论】:

... 只是做你正在做的事情,但不是 newImage.size(),而是使用你想要的任何大小,然后 newSprite.color = UIColor.whateverColor() @Knight0fDragon newSprite = firstBody.node,将其设为SKNode,所以当我执行newSprite.color = UIColor.blueColor() 时,我收到一个错误消息Value of type 'SKNode' has no member 'color'。另外如果我理解你的话,不用newImage,对吧? 因为你需要把它转换成一个skspritenode 向下转型if let newSprite = firstBody.node as? SKSpriteNode ... 【参考方案1】:

这应该可以工作

newSprite.color = UIColor.redColor()
newSprite.size = CGSize(width: 250, height: 250)

【讨论】:

和?有了这样的尺寸,您将拥有巨大的精灵(远大于 250x250)

以上是关于如何在没有 SKTexture 的情况下更改 didBeginContact 中的 SKSpriteNode 大小和颜色?的主要内容,如果未能解决你的问题,请参考以下文章

在没有DI框架的情况下注入存储库

如何在 SKSpriteNode 中“居中”SKTexture

如何在没有监控线程或进程的情况下使用 C++ 快速获取目录是不是已更改?

SKSpriteNode替换为SKTexture

如何在没有委托的情况下处理 UITextField 值更改? [关闭]

如何在没有按键的情况下更改大写锁定状态