当前位置: 首页 > 面试题库 >

如何使物理物体粘附到节点的锚点

田德运
2023-03-14
问题内容

我在场景中间有四个正方形,分别设置了多个锚点。轻按时,它们会一起移动并根据位置分开:

 func rotate(angle : CGFloat, animated : Bool) {
    var rotateAction : SKAction!

    if animated {
        rotateAction = SKAction.rotateByAngle(angle, duration: 0.6)
    }
    else {
        rotateAction = SKAction.rotateByAngle(angle, duration: 0)
    }
    for node in self.children as! [SKSpriteNode] {

        node.runAction(rotateAction)
    }
}

}

我的问题是节点的物理实体严格地停留在锚点上,而不是节点本身,这给我带来了很多麻烦。我如何才能使每个节点具有所需的锚点,并使物理物体直接停留在节点上?如有必要,将发布更多代码。


问题答案:

您需要将锚点应用于物理物体,它不了解什么是子图形,这只是子图形使用的另一条信息,因此请使用以下计算方法确定子图形的中心位置,然后将其应用转移到物理机体,以便它可能会移动:

 let centerPoint = CGPointMake(sprite.size.width / 2 - (sprite.size.width * sprite.anchorPoint.x), sprite.size.height / 2 - (sprite.size.height * sprite.anchorPoint.y))
 sprite.physicsBody = SKPhysicsBody(rectangleOfSize: sprite.size, center: centerPoint)

迅捷3+:

 let centerPoint = CGPoint(x:sprite.size.width / 2 - (sprite.size.width * sprite.anchorPoint.x), y:sprite.size.height / 2 - (sprite.size.height * sprite.anchorPoint.y))
 sprite.physicsBody = SKPhysicsBody(rectangleOf: sprite.size, center: centerPoint)

更少的文字:

 let centerPoint = CGPoint(x:sprite.size.width * (0.5 - sprite.anchorPoint.x), y:sprite.size.height *(0.5 - sprite.anchorPoint.y))


 类似资料:
  • 问题内容: 据我所知(很少),给出了两种方法: 然后: 其他更好的方法?我在这里劈头发吗? 问题答案: 您正在寻找。 但是要考虑到 您不能显式销毁对象。 它会保留在那里,但是如果您取消设置对象,并且脚本将PHP推入内存限制,则不需要的对象将被垃圾回收。我会选择(而不是将其设置为null),因为它似乎具有更好的性能(未经测试,但已记录在PHP官方手册的注释中)。 也就是说,请记住,PHP总是在页面被

  • 问题内容: 我想启用文本对象和Blob之间的一对多关系,以便文本对象(“文章”或类似内容)具有许多图像和/或视频。我看到有两种方法,其中第一种是使用blob列表作为实例变量。能行吗 优点:仅上一堂课。可读且易于获取和设置数据。缺点:缺少有关Blob的额外信息,例如,如果我想用描述性单词标记Blob,则仍然需要两个类: 后面的示例有一个缺点,因为它需要引用属性,并且引入了两个类,可以像第一个示例中那

  • 我正在尝试为我用C语言开发的一个应用程序——OpenframeWorks——实现我自己的物理功能。我目前正在使用Box2D,但我不需要碰撞检测,所以我想要更轻的东西。 我有一个有重力的世界和一个动态物体,它的运动受到一个任意长度和任意角度的棱柱形关节的约束,连接到一个静态物体上。摩擦是用关节马达模拟的。 我看过 2D游戏物理资源 但这里的一切似乎都集中在构建完整的物理引擎上,我不需要这样做。有人能

  • 问题内容: 使用three.js我有以下内容。 包含多个Object3D实例的场景 几个预定义的摄像机Vector3位置 屏幕调整大小时画布的动态宽度/高度 用户可以选择一个对象(从上方) 用户可以选择相机位置(从上方) 给定正在查看的对象和摄像机位置,他们选择了如何计算最终摄像机位置以“最适合”屏幕上的对象? 如果在某些屏幕上按原样使用摄像机位置,则对象在我的视口边缘上流血,而其他对象看起来较小

  • 以前,我遇到了多个Matplotlib图形之间的干涉问题。最后,我发现了一个问题,一些pyplot函数不附加到它们的figure实例,但可以在并行创建的其他figure实例中呈现。 下面是一些示例代码: 上面的例子中的等高线py图函数可以在图1中渲染,但偶尔也会在并行生成的其他图中渲染。那很烦人。有什么方法可以将等高线py图函数附加到图1吗?

  • 为了更好的介绍如何使用物理,将通过以下模块进行介绍: 模块 描述 碰撞组件 介绍了Collider组件的设计,以及与RigidBody组件的关系 物理材质 介绍了 Cocos Creator 3D 中的物理材质资源 刚体组件 介绍了RigidBody组件的一些代码使用示例 物理事件 介绍了 Cocos Creator 3D 中的物理事件 分组掩码 介绍了物理过滤检测中分组掩码的使用 射线检测 介绍