Viking Platform II – Eric & the Onyx Heart. La cuerda.

Como prometí en el anterior post, esta vez os cuento como se hace la cuerda por código en SpriteKit con Swift. La verdad es que no es difícil, pero nunca había hecho ninguna y me resultó curioso ver como funciona “SKPhysicsJoint y el resultado que ofrece. Sin más, vamos directos a ver el código.

 SKPhysicsJoint

De momento lo tengo incluido en el “didMove, luego lo sacaré a una función para que busque todas las cuerdas en el SKS. Yo la he dividido en tres partes, para poder construirla como si fueran tiles. Una imagen para el enganche, otra para la construcción de la cuerda y la última para cerrar los tiles. Podéis seguir el código desde este post.

Creamos antes las variables en la clase antes del “didMove“.

1
2
3
4
var cuerda = [SKSpriteNode]()
var anclaje = SKSpriteNode()
var trozoCuerda = SKSpriteNode()
var ultimoTrozoCuerda = SKSpriteNode()

Dentro del “didMove”  incluimos lo siguiente:
Primera parte: Lo que sería el anclaje. Es la imagen que utilizo que engancha la cuerda al techo.

1
2
3
4
5
6
7
anclaje = SKSpriteNode(imageNamed: "anclaje")
anclaje.position = CGPoint(x: cuerda.position.x, y: cuerda.position.y)
anclaje.zPosition = suelo.zPosition - 1
cadena.append(anclaje)
addChild(anclaje)
anclaje.physicsBody = SKPhysicsBody(circleOfRadius: anclaje.size.width / 2)
anclaje.physicsBody?.isDynamic = false

Segunda parte: El conjunto de trozos de la cuerda. Trabajo antes en el SKS y dibujo un SKNode en donde debería ir la cuerda y del tamaño que quiero que tenga en el escenario.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cuerda = childNode(withName: "cuerda") as! SKSpriteNode
let cantidadTrozosDeCuerda = Int(cuerda.size.height / 20)
cuerda.size = CGSize(width: 15, height: 20)
cuerda.alpha = 0.001
for i in 0..
trozoCuerda = "eslabon:\(i+1)"
trozoCuerda = SKSpriteNode(imageNamed: "trozoCuerda")
let offset = trozoCuerda.size.height * CGFloat(i + 1)
trozoCuerda = CGPoint(x: anclaje.position.x, y: anclaje.position.y - offset)
trozoCuerda = suelo.zPosition - 1
cuerda.append(trozoCuerda)
addChild(trozoCuerda)
trozoCuerda.physicsBody = SKPhysicsBody(rectangleOf: trozoCuerda.size)
trozoCuerda.physicsBody?.categoryBitMask = Categoria.eslabon
trozoCuerda.physicsBody?.contactTestBitMask = Categoria.player
trozoCuerda.physicsBody?.collisionBitMask = Categoria.nada
}

Tercera parte: el último trozo de la cuerda.

1
2
3
4
5
6
7
ultimoTrozoCuerda = SKSpriteNode(imageNamed: "ultimoTrozoCuerda")
ultimoTrozoCuerda.position =  CGPoint(x: cuerda.last.position.x, y: cuerda.last.position.y)
ultimoTrozoCuerda.zPosition = suelo.zPosition - 1
cuerda.append(ultimoTrozoCuerda)
addChild(ultimoTrozoCuerda)
ultimoTrozoCuerda.physicsBody = SKPhysicsBody(rectangleOf: trozoCuerda.size)
ultimoTrozoCuerda.physicsBody?.isDynamic = false

Y por último, las físicas de la cuerda.

1
2
3
4
for i in 1..< cantidadTrozosDeCuerda {
let nodeA = cuerda[i - 1]
let nodeB = cuerda[i]
let jointTrozosDeCuerda = SKPhysicsJointPin.joint(withBodyA: nodeA.physicsBody!, bodyB: nodeB.physicsBody!, anchor: CGPoint(x: nodeA.position.x, y: nodeA.position.y))

Luego en los contactos y colisiones hacemos también un “SKPhysicsJoint  entre el héroe y el trozo de cuerda cuando se establece el contacto y para balancearlo, en el apartado de gestos que ya vimos en el anterior Post utilizamos el gesto que queramos utilizar.

Como veis no ha sido nada difícil, en realidad nada lo es en cuanto sabes hacerlo. A partir de ahora ya no veremos más código. La semana que viene os presentaré a Eric y veréis como se ha diseñado. De momento en el siguiente video se pueden ver los resultados de lo que puede llegar a hacer el código que os he mostrado.

Ya podéis ir haciendo vuestras pruebas y no os olvidéis descargar la primera parte Viking Platform – Eric & the 4 power stones.

Cada nueva descarga me ayuda a seguir desarrollando y a crear nuevos juegos para  que los podáis disfrutar en vuestro dispositivo iOS.

Viking Platform – Eric & the 4 power Stones

Viking Platform – Eric & the 4 Power Stones es un juego de aventuras tipo plataforma inspirado en el game play del antiguo y mítico Rick Dangerous con el que tanto disfrutamos algunos. Viking Platform no tiene mucho de habilidad, la clave es recordar cada una de las pantallas para conseguir evitar las trampas e ir avanzando en el Juego.

Odín te ha encomendado una misión, Salvar el mundo. Recorre 4 apasionantes escenarios y reúne las piedras de poder necesarias para acabar con el Ragnarök. Salta, encuentra cofres ocultos, elimina a los enemigos guardianes de las piedras de poder y guía a Eric en esta apasionante aventura de plataformas. ¿Te atreves?

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.