我正在重新使用DemoBots中用於接觸檢測的方法。由於我的代碼的工作方式和如何編寫DemoBots之間的差異,我遇到了一個問題。 在DemoBots,組件RenderComponent具有可變「node
」GKEntity not identified
let node = EntityNode()
init(entity: GKEntity) {
node.entity = entity
}
在我的代碼,我沒有使用動畫,所以我相當於RenderComponent的是更復雜一點。變量「節點」已被使用,並綁在physicsBody,所以我創建了一個新的變量「entityNode
」
let node: SKSpriteNode
let entityNode = EntityNode()
init(entity: GKEntity, nodeTemplate: SKSpriteNode) {
node = SKSpriteNode(imageNamed: "animal")
entityNode.entity = entity
}
內handleContact:方法,我嘗試了兩種解決方案,以獲得參考實體。 選項1:
let entityA = (contact.bodyA.node as? EntityNode)?.entity
let entityB = (contact.bodyB.node as? EntityNode)?.entity
運行的print()檢查這個返回這兩個實體一個零值。這是合乎邏輯的,因爲我應該尋找名爲'entityNode
'的屬性來查找實體。當我將其更改爲 選項2:
let entityA = (contact.bodyA.entityNode as? EntityNode)?.entity
let entityB = (contact.bodyB.entityNode as? EntityNode)?.entity
我得到一個錯誤的physicsBody沒有一個成員「entityNode
」。我嘗試了一些其他的東西,比如查找與contactBody相關聯的實體,但是我得到了另一個錯誤,說明後續代碼正在尋找可選項。我試圖擺脫'如果',但它只是將問題一起移動到下一個contactCallBack
電話。
if let notifiableEntity = entityA as? ContactNotifiableType, otherEntity = entityB where aWantsCallback {
contactCallback(notifiableEntity, otherEntity)
}
任何想法如何,我可以解決這個得到contactCallBack
電話的工作?