这里我有一个带子弹的坦克,当用户点击屏幕时,坦克开火,很好
但当子弹从水箱中出来时,它会越过屏幕而不会停在触摸位置
这是我的代码:
for touch in touches {
let location = touch.location(in: self)
let bullet = SKSpriteNode(imageNamed: "bullet4")
bullet.position = CGPoint(x: self.MainTank.position.x, y: self.MainTank.position.y + 10)
bullet.size = CGSize(width: 12, height: 20)
bullet.physicsBody = SKPhysicsBody(circleOfRadius: bullet.size.width / 2)
bullet.physicsBody?.affectedByGravity = false
bullet.physicsBody?.isDynamic = true // false stops the bullet on the tank
bullet.physicsBody?.allowsRotation = false
self.addChild(bullet)
var dx = CGFloat(location.x)
var dy = CGFloat(location.y)
let magnitude = sqrt(dx * dx + dy * dy)
dx /= magnitude
dy /= magnitude
let vector = CGVector(dx: 5.0 * dx, dy: 5.0 * dy)
bullet.physicsBody?.applyImpulse(vector)
}
我试图将isDynamic
设置为true,但这会使子弹停在坦克位置
由于
答案 0 :(得分:0)
它可能会移动到屏幕之外,因为您将向量乘以5.0。我也不会像那样创建你的矢量,因为没有必要的分量部分。试试这个:
usleep