swift - 当父节点和子节点各自具有 SKPhysicsBody 时出现问题
问题描述
我在屏幕上方设置了一个 SKSpriteNode,这样它就会从上面掉下来。所以它确实有一个受重力影响的 SKPhysicsBody。但这只是让它从上面掉下来,不会有碰撞检测。节点本身有 6 个子节点均匀分布。
但是我需要每个孩子都能够检测到碰撞。所以我给了他们一个 SKPhysicsBody。当我这样做时,它们似乎与父节点分离并造成混乱。将affectedByGravity 设置为false 不会执行任何操作。我是否缺少一个步骤,可以将他们锤到他们的父母那里?
父 SKNode 的原因是因为会有多个,并且更容易移动每个 SKNode 的所有子节点,以及一次性销毁它们。
左边是我想要的,右边是当我给每个孩子自己的 SKPhysicsBody 时出现的混乱。
我应该补充一点,如果我将孩子的 isDynamic 设置为 false,那么他们会将父母举到屏幕上方,这样它就不会掉下来。
解决方案
我的第一个问题是我的类别掩码设置不正确。
我确保父母和孩子都属于同一类别,
然后我使用 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]
推荐阅读
- java - Java 时区按双值更新
- java - 用springboot运行编译的jar,Hibernate无法创建entityManagerFactory bean
- javascript - 使用高阶函数合并相等的对象
- winforms - 在 Crystal Reports 中获得最大数量?
- java - 两帧显示
- sql-server - Globle 临时表的明确目的是什么?
- c# - c# TCP socket停止接收数据包
- wpf - 绑定到多个属性:我应该使用 IMultiValueConverter 还是计算属性?
- php - 在 Woocommerce 出错后停止添加到购物车重定向
- java - Java CDI 实例注入泛型类型