gpt4 book ai didi

ios - 如何使用 SpriteKit 使球仅垂直而不是水平弹跳?

转载 作者:搜寻专家 更新时间:2023-10-31 08:32:04 25 4
gpt4 key购买 nike

我正在制作一个 iOS 应用程序,我只希望球在其中上下弹跳,而不是水平或任何其他角度。不幸的是,我决定设计游戏的方式导致了一些问题。这是一个显示我的问题的 GIF:

enter image description here

基本上:有时当我点击旋转五边形时,当我只希望它上下移动时它会以一定角度击中球。

这是我的球代码:

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
}

有没有什么方法可以让球始终沿特定直线(垂直)移动?有没有人对球有设计建议,或者可能有不同的移动方式(SKActions,例如:moveTo 而不是使用重力)。

告诉我。谢谢!

最佳答案

要将节点的 x 坐标限制为固定值,请定义一个 SKRange,并将最小和最大参数设置为相同的值。

let centerX = ball.position.x
let range = SKRange(lowerLimit:centerX, upperLimit:centerX)

从范围中,定义一个positionX约束

let constraint = SKConstraint.positionX(range)

最后,将约束添加到节点的constraints数组

ball.constraints = [constraint]

如果您将它添加到 return ball 语句之上,这应该可以与您现有的代码一起使用。

关于ios - 如何使用 SpriteKit 使球仅垂直而不是水平弹跳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38939301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com