gpt4 book ai didi

ios - 如何让 Sprite 响应接触事件而不是碰撞事件(SpriteKit)?

转载 作者:行者123 更新时间:2023-11-29 02:13:31 26 4
gpt4 key购买 nike

是否可以让 Swift 中的 Sprite 只响应接触事件而忽略碰撞事件?我们将其中一个 sprite 的 dynamic 属性设置为 false,但是当另一个 sprite 接触它时,它没有触发 didBeginContact 方法。

换句话说,我们希望在另一个 sprite 接触到一个对象时在 didBeginContact 中得到通知,但我们不希望该 sprite 经历物理(例如,碰撞时不弹跳或移动)。

最佳答案

将两个 Sprite 上的碰撞位掩码设置为 0。但将 contacttestbitmask 设置为相反的 Sprite 类别位掩码

举个例子

这是我的Power Up的设置,这是一个不表现出物理行为的物理体

    self.physicsBody = SKPhysicsBody(rectangleOfSize: self.size)
self.physicsBody!.categoryBitMask = CategoryPowerup
self.physicsBody!.contactTestBitMask = CategoryShip
self.physicsBody!.collisionBitMask = 0
self.physicsBody!.dynamic = false

这是我的飞船获得能量的设置

    let physicsBodyInset = CGRectInset(CGRectMake(0, 0, self.size.width, self.size.height), 2, 2)
self.physicsBody = SKPhysicsBody(rectangleOfSize: physicsBodyInset.size)
self.physicsBody!.restitution = 0
self.physicsBody!.categoryBitMask = CategoryShip

关于ios - 如何让 Sprite 响应接触事件而不是碰撞事件(SpriteKit)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29023597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com