ios - Solo para la detección de colisiones, ¿es mejor Chipmunk o Box2d?
cocos2d-iphone (2)
¿De qué tipo de colisiones estamos hablando?
Si todo lo que necesitas son estos:
- rect intersects rect -> CGRectIntersectsRect (..)
- punto en rect -> CGRectContainsPoint (..)
- el radio se cruza (es decir, la distancia de dos puntos) -> ccpDistance (..)
Entonces no necesitas un motor de física en absoluto, y tampoco tienes que escribir tus propios algoritmos de detección de colisión.
Chipmunk y Box2D manejan las colisiones igualmente bien. Soy de la opinión de que si uno pregunta "qué es mejor", no le va a importar. En cambio, pregúntese si se siente más cómodo trabajando con C (Ardilla listada) o C ++ (Caja2D).
De manera similar, ¿prefieres trabajar con una API detallada y orientada a objetos (Box2D) o una API funcional y altamente abreviada (Chipmunk)?
Base su decisión en lo que le facilita trabajar, en lugar de una idea arbitraria, indefinida y altamente subjetiva de si un motor de física podría ser mejor que el otro, porque las diferencias técnicas son marginales y solo puede evaluar su influencia en el diseño de su juego si ambos conocen muy bien su propio diseño del juego y los algoritmos internos de los motores físicos.
Para un proyecto basado en Cocos2d, me gustaría utilizar un conjunto de herramientas de física para la detección de colisiones solamente. ¿Cuáles son los pros / contras de usar Chipmunk o Box2d?
Según esta respuesta, Chipmunk no es compatible con la Detección de colisión continua, pero Box2D sí lo hace. Esto es importante para evitar el "efecto túnel" (objetos que pasan ligeramente entre ellos cuando se mueven a altas velocidades)
Esto se aclara con el comentario de Steffen Itterheim sobre sus preguntas frecuentes sobre Box2D vs Chipmunk : si vas a tener objetos de física muy rápidos, por ejemplo, "Bullets", considera usar Box2D ya que puede hacer colisiones barridas, como la integración de colisión continua para evitar objetos en rápido movimiento de penetrar profundamente o incluso hacer un túnel a través de otros objetos.
Los documentos de Chipmunk Collision Detection hablan de una devolución de llamada por separate()
. Dos formas han dejado de tocar por primera vez este paso. pero no estaba claro si esto tiene alguna implicancia de su capacidad para detectar colisiones a gran velocidad.
También hay una opinión muy negativa sobre el uso de Box2D para un juego de ruptura. Mi juego actual está usando Box2D, y me gustaría usar Chipmunk con él ... Principalmente porque Box2D tiene dos problemas graves, que se agravan en mi juego: Primero, tiene un error REALMENTE VIEJO donde los objetos "se enganchan" en las esquinas, mi juego es un juego rompedor, así que cuando la pelota "rueda" a lo largo de una pared, a veces se engancha y se tira lejos de la pared, mucha gente me preguntó por qué mi juego la física parece "aleatoria".
Conclusión: estoy confundido también.