gpt4 book ai didi

碰撞后 Swift 设置 isdynamic 为 false

转载 作者:行者123 更新时间:2023-11-30 12:06:39 26 4
gpt4 key购买 nike

大家好,我有一个问题。

在我的游戏中,我想让汤姆让物体(方 block )从天上掉下来,然后当它们撞到地面或另一个方 block 时卡住/保持在原地/不再是动态的。

我创建了一个函数,在其中随机创建 block 并让它们从天上掉下来。

 func spawnItems() {

var item = SKSpriteNode()

item = SKSpriteNode(imageNamed: "block3");
item.name = "block";
item.size = CGSize(width: 90, height: 90)
item.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: 89.8, height: 89.8))

item.physicsBody?.isDynamic = true
item.physicsBody?.affectedByGravity = true
item.physicsBody?.allowsRotation = false
item.physicsBody?.restitution = 0

item.physicsBody?.categoryBitMask = ColliderType.BLOCK
item.physicsBody?.collisionBitMask = ColliderType.PLAYER | ColliderType.BLOCK | ColliderType.GROUND

item.physicsBody?.contactTestBitMask = ColliderType.PLAYER | ColliderType.BLOCK | ColliderType.GROUND

item.zPosition = 30;
item.anchorPoint = CGPoint(x: 0.5, y: 0.5);
item.position.x = CGFloat(getKoordinates());
item.position.y = 800;

self.scene?.addChild(item)
}


override func didMove(to view: SKView) {

Timer.scheduledTimer(timeInterval: TimeInterval(1), target: self, selector: #selector(GameplayScene.spawnItems), userInfo: nil, repeats: true);



}

现在,当一个方 block 撞击地面/方 block 时,我想将 isDynamic 设置为 false,以便它保持在原位。

我该怎么做?

最佳答案

您需要确保您的类是一个SKPhysicsContactDelegate,您将场景的物理世界delegate属性设置为self,然后您需要实现正确设置的 2 个 Sprite (通过其 contactTestBitMaskcategoryBitMask)进行接触时将调用的 didBegin(contact:) 方法.

关于碰撞后 Swift 设置 isdynamic 为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46611805/

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