0
嘿家伙我有一个问题。碰撞后迅速设置isdynamic为false
在我的游戏中,我想让汤姆让物体(块)从天而降,然后当它们撞到地面或另一个块冻结/保持原位/不再动态时。
我创建了一个函数,我随机创建了一个让它们从天而降的块。
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);
}
现在我想将isDynamic设置为false,当块撞击地面/块时,它会保持原位。
我该怎么做?
是的,我试过。但问题是,当对象碰撞时,每次我将isdynamic设置为false时,将来创建的每个其他项目也会将isdynamic设置为false。你懂我的意思吗? – Chief
你可以通过编辑问题发布你的'didBegin'函数的代码吗? –