gpt4 book ai didi

swift - 如何在接触/碰撞时改变物理体形

转载 作者:可可西里 更新时间:2023-10-31 23:44:31 26 4
gpt4 key购买 nike

我创建了一个具有圆形物理体的 Sprite 。我想在与另一个物体接触/碰撞时将圆形更改为矩形物理物体。我相信这应该在 didBeginContact 中完成。这是我到目前为止所做的

ball.position = CGPointMake(self.frame.size.width/2, self.frame.size.height/2)
self.addChild(ball)
ball.physicsBody = SKPhysicsBody(circleOfRadius: ball.frame.size.width/2)
ball.physicsBody?.friction = 0
ball.physicsBody?.restitution = 1.2
ball.physicsBody?.linearDamping = 0
ball.physicsBody?.angularDamping = 0
ball.physicsBody?.allowsRotation = false
ball.physicsBody?.applyImpulse(CGVectorMake(2, -4))

func didBeginContact(contact: SKPhysicsContact) {
var firstBody : SKPhysicsBody
var secondBody : SKPhysicsBody

if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask {
firstBody = contact.bodyA
secondBody = contact.bodyB
}
else {
firstBody = contact.bodyB
secondBody = contact.bodyA
}

if firstBody.categoryBitMask == ballCategory && secondBody.categoryBitMask == enemyCategory {

//change ball physics shape here
}
}

最佳答案

请记住,物理体是属于节点的东西。它只是一个属性,它的存在依赖于该节点。您所要做的就是在节点的 physicsBody 属性中将一个物体换成另一个物体:

//inside of didBeginContact, say you want to change firstBody's body to rectangle
firstBody.node.physicsBody = SKPhysicsBody(rectangleOfSize:...)

关于swift - 如何在接触/碰撞时改变物理体形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32772161/

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