首页 > 解决方案 > 当父节点和子节点各自具有 SKPhysicsBody 时出现问题

问题描述

我在屏幕上方设置了一个 SKSpriteNode,这样它就会从上面掉下来。所以它确实有一个受重力影响的 SKPhysicsBody。但这只是让它从上面掉下来,不会有碰撞检测。节点本身有 6 个子节点均匀分布。

但是我需要每个孩子都能够检测到碰撞。所以我给了他们一个 SKPhysicsBody。当我这样做时,它们似乎与父节点分离并造成混乱。将affectedByGravity 设置为false 不会执行任何操作。我是否缺少一个步骤,可以将他们锤到他们的父母那里?

父 SKNode 的原因是因为会有多个,并且更容易移动每个 SKNode 的所有子节点,以及一次性销毁它们。

左边是我想要的,右边是当我给每个孩子自己的 SKPhysicsBody 时出现的混乱。

我应该补充一点,如果我将孩子的 isDynamic 设置为 false,那么他们会将父母举到屏幕上方,这样它就不会掉下来。

之前和之后

标签: swiftskphysicsbody

解决方案


我的第一个问题是我的类别掩码设置不正确。

我确保父母和孩子都属于同一类别

然后我使用 SKContraint 基本上将每个孩子都钉在了父母身上。目前它似乎可以正常工作,没有任何故障。

下面的代码在创建时为每个孩子运行。

let rangeX       = SKRange(lowerLimit: indexSpacing, upperLimit: indexSpacing)
let contraintX   = SKConstraint.positionX(rangeX)
let rangeY       = SKRange(lowerLimit: (self.size.height/2), upperLimit (self.size.height/2))
let contraintY   = SKConstraint.positionY(rangeY)
self.constraints = [contraintX, contraintY]

推荐阅读