首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的动态物理身体要通过我的静态物理体?

问为什么我的动态物理身体要通过我的静态物理体?
EN

Stack Overflow用户
提问于 2014-10-24 16:40:31
回答 1查看 620关注 0票数 1

我有一个叫"bo“的动态物理体,一个叫"leftBumper”的。当它们相撞时,我希望保险杠保持在原地,让波从保险杠上跳下来。

相反,当它们相撞时,波继续移动,保险杠飞离屏幕。看来两者都是动态的。这是我的代码:

波:

代码语言:javascript
复制
    bo.physicsBody?.dynamic = true
    bo.physicsBody?.categoryBitMask = boCategory // 3
    bo.physicsBody?.contactTestBitMask = chainsawCategory // 4
    bo.physicsBody?.collisionBitMask = noneCategory & bumperCategory
    addChild(bo)

保险杠:

代码语言:javascript
复制
 leftBumper.physicsBody?.dynamic = false
    leftBumper.physicsBody = SKPhysicsBody(rectangleOfSize: leftBumper.size)
    leftBumper.physicsBody?.categoryBitMask = bumperCategory
    leftBumper.physicsBody?.collisionBitMask = boCategory

    leftBumper.zPosition = 10

    addChild(leftBumper)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-24 18:28:33

这是行不通的:

代码语言:javascript
复制
leftBumper.physicsBody?.dynamic = false
leftBumper.physicsBody = SKPhysicsBody(rectangleOfSize: leftBumper.size)

在physicsBody为0(或前一个主体)的时候设置标志,然后创建一个新的body实例,该实例默认设置为true动态标志。首先,创建主体,然后更改其属性。

第二,在设置比特掩码之前,试着让它在没有它们的情况下工作。您应该检查文档是如何工作的。比特面具经常被误解。

在这种情况下,bo和保险杠都有自己的类别,但它们不会产生接触事件,因为bo的联系人位掩码被设置为电锯类别,而保险杠根本不使用。如果您希望他们接触和碰撞,则bo需要在其触点和碰撞位掩码中包含保险杠类别,而保险杠需要在其触点和碰撞位掩码中包含bo类别。

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

https://stackoverflow.com/questions/26552419

复制
相关文章

相似问题

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