gpt4 book ai didi

swift - didBeginContact 错误触发

转载 作者:行者123 更新时间:2023-11-28 06:27:16 24 4
gpt4 key购买 nike

在我的游戏中,我有从一个点向前发射的激光。我使用此代码拉伸(stretch)激光 Sprite 并移动它以模拟更新函数中的运动:

let height = size.height
yScale += travelSpeed * CGFloat(time)
let difference = size.height - height
let xMove = sin(-zRotation) * difference * 0.5
let yMove = cos(-zRotation) * difference * 0.5
position = CGPoint(x: position.x + xMove, y: position.y + yMove)

一切看起来都很好 - 激光从一个点射出,view.showPhysics 中的物理体轮廓完全遵循。但是,当玩家没有接触到激光时,有时会错误地触发 didBeginContact。为什么会这样?

编辑:

激光物理体:

    physicsBody = SKPhysicsBody(texture: texture!, size: size)
physicsBody!.affectedByGravity = false
physicsBody!.linearDamping = 0
physicsBody!.collisionBitMask = 0
physicsBody!.categoryBitMask = 1

玩家物理 body :

    physicsBody = SKPhysicsBody(circleOfRadius: 5)
physicsBody!.affectedByGravity = false
physicsBody!.linearDamping = 0
physicsBody!.collisionBitMask = 0
physicsBody!.contactTestBitMask = 1

所以它们被设置为当它们碰撞时调用 didBeginContact,它确实发生了。我遇到的问题是,当玩家没有接触时,有时也会调用 didBeginContact。我目前的假设是,我的运动代码在不可见的瞬间或其他情况下错放了激光的物理体。

我在 didBeginContact 中设置了一个断点并截图了。碰撞的物体是船和穿过拐角的激光。

最佳答案

事实证明,如果您尝试将 sprite 拉伸(stretch)到原始大小的约 100 倍,物理体会变得稍微不准确。糟糕。

我尝试在更新中重新应用一个新的物理体,这似乎有效。

关于swift - didBeginContact 错误触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41512499/

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