我正在尝试使 youtube 视频 ( https://www.youtube.com/watch?v=D7ntzPFvMf0 ) 中的飞鸟看起来很像,它是在 swift 2 中制作的。我正在尝试在 swift 3 中做到这一点。一切都很顺利,直到我达到触摸开始功能。
所有先前的物理行为都像受重力影响一样工作。单击触摸开始时,没有任何反应。我测试了它是否甚至可以通过打印来工作,并且确实如此。所以我试图让我的 datBoi 在点击时跳转。作为注释,视频让我放了
datBoi.physicsBody?.applyImpulse(CGVectorMake( 0, 100))
但我把它换成了我所知道的
CGVector(dx: 0,dy: 100)
因为这似乎在 swift 3 中过期了。
这里感谢任何帮助是我关于 datBoi 对象的代码。
struct PhysicsCategory
{
static let datBoi : UInt32 = 0x1 << 1
static let Ground : UInt32 = 0x1 << 2
static let Wall : UInt32 = 0x1 << 3
}
class GameScene: SKScene
{
var Ground = SKSpriteNode()
var datBoi = SKSpriteNode()
override func didMove(to view: SKView)
{
datBoi = SKSpriteNode(imageNamed: "datboi")
datBoi.size = CGSize(width: 150, height: 240)
datBoi.position = CGPoint(x: -85, y: 0)
datBoi.physicsBody = SKPhysicsBody(rectangleOf: datBoi.size)
datBoi.physicsBody?.categoryBitMask = PhysicsCategory.datBoi
datBoi.physicsBody?.collisionBitMask = PhysicsCategory.Ground | PhysicsCategory.Wall
datBoi.physicsBody?.contactTestBitMask = PhysicsCategory.Ground | PhysicsCategory.Wall
datBoi.physicsBody?.affectedByGravity = true
datBoi.physicsBody?.isDynamic = true
datBoi.zPosition = 2
self.addChild(datBoi)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
{
datBoi.physicsBody?.velocity = CGVector(dx: 0, dy: 0)
datBoi.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 100))
print("hi")
}
}