Swift 斯威夫特:受物理世界引力的影响?
我试图得到一个受风影响的雨粒子,也就是物理世界引力 我可以看到重力确实对我的SKSpriteNodes有影响,但我不能对SKEmitterNode产生同样的影响 我只是想知道这是否可能 这是我一直在尝试的Swift 斯威夫特:受物理世界引力的影响?,swift,sprite-kit,Swift,Sprite Kit,我试图得到一个受风影响的雨粒子,也就是物理世界引力 我可以看到重力确实对我的SKSpriteNodes有影响,但我不能对SKEmitterNode产生同样的影响 我只是想知道这是否可能 这是我一直在尝试的 override func didMove(to view: SKView) { if let rainParticles = SKEmitterNode(fileNamed: "Rain.sks") { rainParticles.position = CG
override func didMove(to view: SKView) {
if let rainParticles = SKEmitterNode(fileNamed: "Rain.sks") {
rainParticles.position = CGPoint(x: size.width/2, y: size.height)
rainParticles.name = "rainParticle"
rainParticles.targetNode = scene
rainParticles.particlePositionRange =
CGVector(dx: frame.size.width, dy: frame.size.height)
rainParticles.zPosition = -1
// I don't think this is right
rainParticles.physicsBody = SKPhysicsBody(edgeLoopFrom: frame)
rainParticles.physicsBody?.affectedByGravity = true
addChild(rainParticles)
}
physicsWorld.contactDelegate = self
// gravity is pushing to the right here
physicsWorld.gravity = CGVector(dx: 20, dy: 0)
physicsWorld.speed = 0.85
}
是,我添加了skphysiccontactdelegate
显然,我想忽略碰撞,所以我没有设置碰撞位掩码
,也不想让雨水通过contactTestBitMask
从任何东西上反弹。我认为我不需要设置类别BitMask
粒子不由SpriteKit中的对象表示。这意味着您不能对粒子执行与节点相关的任务,也不能将物理实体与粒子关联以使其与其他内容交互。尽管没有表示发射器节点添加的粒子的可见类,但可以将粒子视为具有与任何其他对象类似的特性
这直接来自SKEmitterNode
文档。粒子不会从场景的physicsWorld
获得任何重力加速度。
另外rainParticles.physicsBody
指的是SKEmitterNodephysicsBody
,而不是其粒子
如果您只是想让粒子模拟当前物理世界的重力:
rainParticles.xAcceleration = self.physicsWorld.gravity.dx
rainParticles.yAcceleration = self.physicsWorld.gravity.dy