gpt4 book ai didi

xcode - 碰撞时将节点粘到另一个节点

转载 作者:可可西里 更新时间:2023-11-01 00:38:03 26 4
gpt4 key购买 nike

我正在制作一个 iOS 游戏(swift xcode)。

有一辆不断移动的汽车(SKAction)和一个可以用滑动手势移动的播放器。

很好,但现在我希望如果玩家触摸汽车,它会随着汽车移动(它会粘在汽车上)

现在我该怎么做呢?

我尝试了很多东西,但没有一个能顺利地工作..

我试过

if (CGRectIntersectsRect(car.frame, player.frame)) {
car.position = player.position
}

这可行,但玩家会被踢到汽车中间,我不希望这样。我想要的是,如果玩家接触到汽车底部,它就会粘在汽车底部。

我该怎么做?

对于碰撞检测,我也尝试使用:

 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 & CarCategory) != 0 && (secondBody.categoryBitMask & playerCategory) != 0)
{


}

}

但我不知道在括号之间放什么才能让它像我想要的那样顺利运行。

最佳答案

您可以使用固定的物理关节连接两个节点。通常,物理关节连接场景中的两个物理体。固定版本 SKPhysicsJointFixed 连接两个主体,使它们充当一个主体。

下面是一个如何用固定关节连接两个物理体的例子:

首先,将其添加到您的 SKScene 子类(例如 GameScene.m)

func joinPhysicsBodies(bodyA:SKPhysicsBody, bodyB:SKPhysicsBody, point:CGPoint) {
let joint = SKPhysicsJointFixed.jointWithBodyA(bodyA, bodyB: bodyB, anchor: point)
self.physicsWorld.addJoint(joint)
}

并将此添加到 didBeginContactif 语句中

self.joinPhysicsBodies(firstBody, bodyB:secondBody, point:contact.contactPoint)

其中 contact.contactPoint 是接触点。

关于xcode - 碰撞时将节点粘到另一个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27094366/

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