Я пытаюсь сделать свое первое приложение для iOS и в настоящее время сталкивается с проблемой.SKSpriteKit, поддерживающий постоянную скорость после столкновения
В моей игре, когда мяч отскакивает, я хочу, чтобы он оправился на ту же высоту и с той же скоростью. В настоящее время это все прекрасно. Однако, когда я поворачиваю шестиугольник, и он попадает под углом, он заканчивает проигрыш скорости, а не подпрыгивает до той же высоты.
Так что мой вопрос: как заставить мяч поддерживать ту же скорость при столкновении?
Вот код для моего шарика узла:
func createBallNode(ballColor: String) -> SKSpriteNode {
let ball = SKSpriteNode(imageNamed: ballColor)
ball.position = CGPoint(x: CGRectGetMidX(frame), y: CGRectGetMidY(frame)+30)
ball.zPosition = 1
ball.physicsBody = SKPhysicsBody(circleOfRadius: ball.size.width/2)
ball.physicsBody?.affectedByGravity = true
ball.physicsBody?.restitution = 1
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
let centerX = ball.position.x
let range = SKRange(lowerLimit: centerX, upperLimit: centerX)
let constraint = SKConstraint.positionX(range)
ball.constraints = [constraint]
return ball
}
Ниже GIF объяснения проблемы в визуальной форме:
Какое значение будет «intentedHeight»? Так что, если высота должна быть в середине экрана, что я ему даю? –
@JimmyLee Это может быть только центр шестиугольника. Если это также центр сцены, вы можете использовать 'let purposeHeight = view.frame.midY'. – nathan
К сожалению, это не помогло мне исправить мою проблему: / –