Ios 敏捷的身体不受冲动的影响

Ios 敏捷的身体不受冲动的影响,ios,swift3,xcode8,game-physics,Ios,Swift3,Xcode8,Game Physics,这是我在这里的第一篇文章,我对iOS编程还不熟悉。我正在使用Xcode 8和Swift 3构建我的练习游戏。我只想在屏幕被点击时跳球,但冲动不起作用。这是我写的代码 class GameScene: SKScene { var footBall = SKSpriteNode(imageNamed: "sfb") var Score = 0 var GameStarted = false override func didMove(to view: SKView) { self.rem

这是我在这里的第一篇文章,我对iOS编程还不熟悉。我正在使用Xcode 8和Swift 3构建我的练习游戏。我只想在屏幕被点击时跳球,但冲动不起作用。这是我写的代码

class GameScene: SKScene {
var footBall = SKSpriteNode(imageNamed: "sfb")
var Score = 0
var GameStarted = false


override func didMove(to view: SKView) {
    self.removeAllChildren()
    self.anchorPoint = CGPoint(x: 0.0, y: 0.0)

    footBall.size = CGSize(width: 100, height: 100)
    footBall.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2)
    footBall.physicsBody = SKPhysicsBody(circleOfRadius: footBall.frame.height / 2)
    footBall.physicsBody?.affectedByGravity = false
    footBall.physicsBody?.allowsRotation = true
    footBall.physicsBody?.isDynamic = true
    self.addChild(footBall)
}


override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    if(GameStarted == false){
        GameStarted = true
        footBall.physicsBody?.affectedByGravity = true
        footBall.physicsBody?.velocity = CGVector(dx: 0, dy: 0)
        footBall.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 90))
    }
    else{
        footBall.physicsBody?.velocity = CGVector(dx: 0, dy: 0)
        footBall.physicsBody?.applyForce(CGVector(dx: 0, dy: 90))
    }
}

override func update(_ currentTime: TimeInterval) {

}
class游戏场景:SKScene{
var footBall=SKSpriteNode(图像名称:“sfb”)
风险值得分=0
var GameStarted=false
覆盖func didMove(到视图:SKView){
self.removeAllChildren()
self.anchorPoint=CGPoint(x:0.0,y:0.0)
footBall.size=CGSize(宽:100,高:100)
footBall.position=CGPoint(x:self.frame.width/2,y:self.frame.height/2)
footBall.physicsBody=SKPhysicsBody(圆形半径:footBall.frame.height/2)
足球。身体?受重力影响=错误
足球.physicsBody?.allowsRotation=true
足球.physicsBody?.isDynamic=真
赛尔夫·阿德奇尔德(足球)
}
覆盖func TouchesBegind(Touchs:Set,带有事件:UIEvent?){
如果(GameStarted==false){
GameStarted=true
足球。身体?受重力影响=真
足球.physicsBody?.velocity=CGVector(dx:0,dy:0)
足球.physicsBody?.applyImpulse(CGVector(dx:0,dy:90))
}
否则{
足球.physicsBody?.velocity=CGVector(dx:0,dy:0)
足球.physicsBody?.applyForce(CGVector(dx:0,dy:90))
}
}
覆盖函数更新(uCurrentTime:TimeInterval){
}

当点击时,球的速度会暂时变为零,但脉冲会推动它上升,这是不可能发生的。请帮助我解决这个问题,忽略任何无知,因为这是我的第一个问题,我对这个问题还不熟悉。

请注意,在真正的分支中,你施加的是力,而不是脉冲

更改:

footBall.physicsBody?.applyForce(CGVector(dx: 0, dy: 90))


我也不明白为什么你总是把速度设为零。

我不知道Swift是如何工作的,但是你真的应该把速度设为0吗?是的,但为什么我不知道。你把足球的质量设为0.6公斤了吗?是的,我试着把质量设为0.6公斤,但也没用。如果你把速度提高到0.6公斤,也不会发生任何事情e冲动?比如
dy:10000
我想问一个问题,我想根据足球的点击位置,在特定的方向上施加冲动。比如在足球的右侧点击时,它应该向左和向上移动,而不仅仅是向上。那么我怎么能做到呢?我想你已经说过了。计算一下球的中心点在场景坐标中,将接触点与接触点进行比较,以查看其接触的位置,然后根据适当的情况应用dx/dy cgvector。要查看你是否接触了球,你可以检查nodesapoint。谢谢@GOR。我将尝试一下。
footBall.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 90))