如何在没有 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() @Knight0fDragonnewSprite = 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 大小和颜色?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SKSpriteNode 中“居中”SKTexture
如何在没有监控线程或进程的情况下使用 C++ 快速获取目录是不是已更改?