gpt4 book ai didi

xcode - 确定 SpriteNode 何时落在矩形 SpriteNode 上

转载 作者:行者123 更新时间:2023-11-30 10:16:17 25 4
gpt4 key购买 nike

我正在制作一款有云彩移动的游戏,我希望当角色降落在云彩上时云彩会消失。然而,当我输入代码时,如果角色绕过它并在仍在下落时撞到云的底部或侧面,它就会消失。这是我用于检测角色和云何时击中的代码。

是否有办法确定角色何时降落在云顶上,以便在下落时从底部或侧面撞击云时,云不会消失?

以下是声明对象的代码:

    Person.physicsBody?.usesPreciseCollisionDetection = true
Person.size = CGSizeMake(self.frame.size.width / 25, self.frame.size.height / 16.25)
Person.physicsBody = SKPhysicsBody(rectangleOfSize: Person.size)
Person.physicsBody?.restitution = 0
Person.physicsBody?.friction = 0
Person.physicsBody?.allowsRotation = false
Person.physicsBody?.affectedByGravity = true
Person.physicsBody?.dynamic = true
Person.physicsBody?.linearDamping = 0
Person.zPosition = 5
Person.physicsBody?.categoryBitMask = BodyType.PersonCategory.rawValue
Person.physicsBody?.contactTestBitMask = BodyType.CloudCategory.rawValue
Person.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame) * 1.7)
self.addChild(Person)


Cloud = SKSpriteNode(texture: NormalCloudTexture)
Cloud.zPosition = 7
Cloud.physicsBody?.usesPreciseCollisionDetection = true
Cloud.physicsBody?.affectedByGravity = false
Cloud.physicsBody?.allowsRotation = false
Cloud.size = CGSizeMake(self.frame.size.width / 8.05, self.frame.size.height / 40)
Cloud.physicsBody = SKPhysicsBody(rectangleOfSize: Cloud.size)
Cloud.physicsBody?.friction = 0
Cloud.physicsBody?.restitution = 0
Cloud.physicsBody?.dynamic = false
Cloud.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame) / 7.60)
addChild(Cloud)

以下是物体击中时的代码:

func didBeginContact(contact: SKPhysicsContact)
{


let contactMask = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask

switch(contactMask)
{
case BodyType.PersonCategory.rawValue | BodyType.CloudCategory.rawValue:
JumpContact = true
let CheckDelay = delay(0.055)
{

//cloud fades away here

}

最佳答案

我还没做过,但我有一个想法。 :)

我认为你应该这样做:使用 contactPoint 属性跟踪接触位置,然后检查它是否没有接触云的 x 位置,距离顶部只有几个点。

希望对你有帮助。 :)

关于xcode - 确定 SpriteNode 何时落在矩形 SpriteNode 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29811500/

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