Я пытаюсь создать игру, в которой игрок каким-то образом скользит по земле, не падая при движении по склонам. Я создал BezierPath, преобразованный в SKShapeNode для земли, а игрок - SKSpriteNode. Я выяснил, на сайте Apple, способ сделать это с помощью этого класса: https://developer.apple.com/documentation/spritekit/skphysicsjointsliding
Проблема в том, что для первого тела требуется SKPhysicsBody.
Кажется, я не могу сделать свой ShapeNode физическим телом.
//this is where I create my ground shape
let groundBezier = UIBezierPath()
groundBezier.move(to: .zero)
groundBezier.addLine(to: CGPoint(x: 0, y: 1000))
groundBezier.addLine(to: CGPoint(x: 500, y: 1000))
groundBezier.addQuadCurve(to : CGPoint(x: 750, y: 750),
controlPoint: CGPoint(x: 650, y: 1000))
groundBezier.addQuadCurve(to : CGPoint(x: 1000, y: 500),
controlPoint: CGPoint(x: 850, y: 500))
groundBezier.addCurve(to : CGPoint(x: 1400, y: 700),
controlPoint1: CGPoint(x: 1200, y: 500),
controlPoint2: CGPoint(x: 1200, y: 700))
groundBezier.addCurve(to : CGPoint(x: 1700, y: 400),
controlPoint1: CGPoint(x: 1600, y: 700),
controlPoint2: CGPoint(x: 1600, y: 400))
groundBezier.addLine(to: CGPoint(x: 1700, y: 0))
groundBezier.addLine(to: .zero)
// Convert First Slope From UIBezierPath to SKShapeNode
let groundNode = SKShapeNode(path: groundBezier.cgPath)
// Define First Slope
groundNode.lineWidth = 5
groundNode.physicsBody = SKPhysicsBody(edgeChainFrom: groundNode.path!)
groundNode.physicsBody?.restitution = 0.0
groundNode.physicsBody?.isDynamic = false
groundNode.fillColor = UIColor.white
// this is where I create my players physics body I Followed apple docs
// Create Player's Circular Physics Body
let circularPlayertexture = SKSpriteNode(texture: playertexture)
// Define Player's Circular Physics Body
circularPlayertexture.physicsBody = SKPhysicsBody(circleOfRadius: max(circularPlayertexture.size.width / 2,
circularPlayertexture.size.height / 2))
// Make Player's Final Physics Body
player.physicsBody = SKPhysicsBody(texture: playertexture,
size: CGSize(width: circularPlayertexture.size.width,
height: circularPlayertexture.size.height))
Я хочу иметь возможность передвигаться с моим игроком, вроде как прилипшим к земле.
Вы знаете, как это исправить?
Знаете ли вы какие-либо альтернативные методы?