gpt4 book ai didi

swift - 使用 SKSpriteNode physicsBody 创建墙/障碍

转载 作者:行者123 更新时间:2023-11-28 12:12:45 29 4
gpt4 key购买 nike

我的 SKSpriteKit 应用程序中有一个单独的“Floor”类。当我第一次创建这个类时,我使用

在整个框架周围设置了一个屏障

self.physicsBody = SKPhysicsBody(edgeLoopFrom: self.frame)

但这实际上阻止了 SKSpriteNodes 从屏幕顶部进入,所以现在我想弄清楚如何创建框架墙的左、右和底部而不是顶部。这样我就可以避免屏幕底部的一个 SKSpriteNode(用户仍然可以看到)左右移动离开显示屏。我正在尝试在下面 build ,好像它会起作用但是当我开始游戏时我没有看到墙壁?我不太确定我做错了什么,我有

skView.showsPhysics = true

    import Foundation
import SpriteKit

class Floor: SKNode {
override init() {
super.init()

let leftWall = SKSpriteNode(color: UIColor.brown, size: CGSize(width: 100, height: frame.height))
leftWall.position = CGPoint(x: 100, y: 100)
leftWall.physicsBody = SKPhysicsBody(rectangleOf: leftWall.size)
leftWall.physicsBody!.isDynamic = false
self.addChild(leftWall)

let rightWall = SKSpriteNode(color: UIColor.brown, size: CGSize(width: 100, height: frame.height))
rightWall.position = CGPoint(x: 200, y: 200)
rightWall.physicsBody = SKPhysicsBody(rectangleOf: rightWall.size)
rightWall.physicsBody!.isDynamic = false
self.addChild(rightWall)

// Set the bit mask properties
self.physicsBody?.categoryBitMask = balloonCategory
self.physicsBody?.contactTestBitMask = nailDropCategory
//self.physicsBody?.collisionBitMask = balloonCategory
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemted")
}
}

最佳答案

重力会影响您的墙壁,因此它们将永远被遗忘。

当你创建边循环时,你不需要担心这个,因为边循环总是静态的,因为它没有体积

现在您正在使用基于体积的物体,因此您需要考虑重力和其他影响您 body 的力。

要让您的 body 忽略这些力,只需设置 isDynamic = false

let leftWall = SKSpriteNode(color: UIColor.brown, size: CGSize(width: 100, height: frame.height))
leftWall.position = CGPoint(x: 100, y: 100)
leftWall.physicsBody = SKPhysicsBody(rectangleOf: leftWall.size)
leftWall.physicsBody!.isDynamic = false
self.addChild(leftWall)

let rightWall = SKSpriteNode(color: UIColor.brown, size: CGSize(width: 100, height: frame.height))
rightWall.position = CGPoint(x: 200, y: 200)
rightWall.physicsBody = SKPhysicsBody(rectangleOf: rightWall.size)
rightWall.physicsBody!.isDynamic = false
self.addChild(rightWall)

关于swift - 使用 SKSpriteNode physicsBody 创建墙/障碍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47916912/

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