首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SKSpritenode | Swift 3| Spritekit -物理属性仅应用于一个Spritekit

SKSpritenode | Swift 3| Spritekit -物理属性仅应用于一个Spritekit
EN

Stack Overflow用户
提问于 2016-09-23 07:54:56
回答 1查看 173关注 0票数 1

我有一个GameScene.sks,其中我添加了两个SkSpritenodes,它们都称为trampoline。代码给了跳床对象一个物理物体等,但在运行时。只有第一个跳床有身体。

你知道为什么它不能应用于所有同名的节点吗?

代码语言:javascript
复制
//Trampoline
var trampoline: SKSpriteNode?       

 override func didMove(to view: SKView) {
trampoline = childNode(withName: "trampoline") as? SKSpriteNode
            trampoline?.physicsBody = SKPhysicsBody.init(rectangleOf: (trampoline?.size)!)
            trampoline?.physicsBody?.affectedByGravity = false
            trampoline?.physicsBody?.isDynamic = false
            trampoline?.physicsBody?.usesPreciseCollisionDetection = true
            trampoline?.physicsBody?.restitution = 1
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-23 15:32:45

代码语言:javascript
复制
childNode(withName: "trampoline") as? SKSpriteNode 

将只返回一个名为trampoline的节点,然后将其赋给您的trampoline变量;您需要枚举所有名为trampoline的节点并设置它们的物理主体。例如。

代码语言:javascript
复制
enumerateChildNodesWithName("trampoline") { trampolineNode, _ in
    trampolineNode?.physicsBody = SKPhysicsBody.init(rectangleOf: (trampolineNode?.size)!)
    trampolineNode?.physicsBody?.affectedByGravity = false
    trampolineNode?.physicsBody?.isDynamic = false
    trampolineNode?.physicsBody?.usesPreciseCollisionDetection = true
    trampolineNode?.physicsBody?.restitution = 1
}

注意.isDynamic属性;如果为'false',则主体不会涉及冲突或接触。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39650559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档