videos spritekit developers apple ios xcode sprite-kit

ios - developers - SpriteKit nodos que se adhieren a los bordes de la escena/no rebotan



scenekit (2)

Como mencionaron los chicos, esta respuesta podría verse intuitivamente como un paso en la dirección correcta, pero el problema está en todo el motor de física de SpriteKit. No es determinista y las fracciones se pierden en el cálculo, causando una simulación imprecisa.

La respuesta corta es usar Box2D en su lugar. La respuesta hackish es aplicar un impulso en la dirección opuesta.

Todos los detalles se destacan en mi otra respuesta .

@Jurik me alegro de poder ayudarte :)

He buscado en este y creo que debe haber algún parámetro para solucionarlo, pero no lo he encontrado.

Tengo una escena en SpriteKit donde quiero que algunos círculos / pelotas reboten y mantengan la velocidad que tienen indefinidamente. Deben rebotar en los bordes de la escena.

Esto funciona si se mueven lo suficientemente rápido, o si golpean en un ángulo bastante agudo, pero si van más despacio y se acercan al plano del borde, siguen moviéndose (lo que es bueno) pero se "pegan" al bordes Este pegarse es lo que no quiero. Deben rebotar incluso si van muy despacio.

Para configurar los bordes, utilicé:

SKPhysicsBody *borderBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame]; self.physicsBody = borderBody; self.physicsBody.friction = 0.0; self.physicsBody.restitution = 1.0; self.physicsBody.linerDamping = 0.0; self.physicsBody.angularDamping = 0.0; self.physicsBody.affectedByGravity = NO;

Y en los nodos del círculo, tengo configuraciones similares, como:

ball.usesPresciseCollisionDetection = YES; ball.dynamic = YES; ball.restitution = 1.0; ball.linearDamping = 0.0; ball.angularDamping = 0.0; ball.friction = 0.0;

Tengo la gravedad en mi escena a cero. Agrego un impulso a los nodos y comienzan a rebotar. Parece muy cerca, ya que las cosas rebotan, pero si hay alguno que se mueve lentamente y entra en un ángulo poco profundo, "abrazan" los bordes. Intentaré incluir una ilustración a continuación para ayudar a visualizar.

http://i.imgur.com/Rpr7luY.png

He intentado jugar con muchos de los ajustes de PhysicsBody, pero no puedo hacer que las cosas dejen de pegarse.

¡Gracias!


Inicializador incorrecto. Hay 2 tipos de SKPhysicsBody : basado en volumen y basado en Edge . Está utilizando el tipo exactamente incorrecto, que no es un movimiento participante.

Por favor revisa la documentación de SKPhysicsBody.