Ios 敏捷的身体不受冲动的影响
这是我在这里的第一篇文章,我对iOS编程还不熟悉。我正在使用Xcode 8和Swift 3构建我的练习游戏。我只想在屏幕被点击时跳球,但冲动不起作用。这是我写的代码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
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))