Jim*_*Lee 5 xcode game-physics ios sprite-kit swift
我正在制作一个 iOS 应用程序,其中我只希望球向上和向下弹起,而不是水平或以任何其他角度弹起。不幸的是,我决定设计游戏的方式导致了一些问题。这是一个 GIF,显示了我的问题所在:
基本上:有时当我单击旋转五边形时,当我只想让它上下移动时,它会以一定角度击中球。
这是我的球代码:
func createBallNode(ballColor: String) -> SKSpriteNode {
let ball = SKSpriteNode(imageNamed: ballColor)
ball.position = CGPoint(x: CGRectGetMidX(frame), y: CGRectGetMidY(frame)+1)
ball.physicsBody = SKPhysicsBody(circleOfRadius: 25)
ball.physicsBody?.affectedByGravity = true
ball.physicsBody?.restitution = 0.99
ball.physicsBody?.linearDamping = 0
ball.physicsBody?.friction = 0
ball.physicsBody?.categoryBitMask = ColliderType.Ball.rawValue
ball.physicsBody?.contactTestBitMask = ColliderType.Rect.rawValue
ball.physicsBody?.collisionBitMask = ColliderType.Rect.rawValue
return ball
}
Run Code Online (Sandbox Code Playgroud)
无论如何,我可以将球设计为始终沿某条线(垂直)移动吗?有没有人对球有设计建议,或者可能有不同的移动方式(SKActions,例如:moveTo 而不是使用重力)。
让我知道。谢谢!
要将节点的 x 坐标限制为固定值,请定义 并将SKRange最小和最大参数设置为相同值。
let centerX = ball.position.x
let range = SKRange(lowerLimit:centerX, upperLimit:centerX)
Run Code Online (Sandbox Code Playgroud)
从范围中,定义一个positionX约束
let constraint = SKConstraint.positionX(range)
Run Code Online (Sandbox Code Playgroud)
最后,将约束添加到节点的constraints数组中
ball.constraints = [constraint]
Run Code Online (Sandbox Code Playgroud)
如果您将其添加到语句上方,这应该适用于您现有的代码return ball。
| 归档时间: |
|
| 查看次数: |
582 次 |
| 最近记录: |