Para un proyecto basado en Cocos2d, me gustaría utilizar un conjunto de herramientas físicas solo para la detección de colisiones. ¿Cuáles son los pros/contras de usar Chipmunk o Box2d?Para detectar colisiones solo, ¿es mejor Chipmunk o Box2d?
Respuesta
¿De qué tipo de colisión estamos hablando?
Si todo lo que necesita son los siguientes:
- rect rect cruza -> CGRectIntersectsRect (..)
- punto en el rect -> CGRectContainsPoint (..)
- radio se cruzan (es decir, distancia de dos puntos) -> ccpDistance (..)
Entonces no necesita un motor de física en absoluto, y tampoco tiene que escribir sus propios algoritmos de detección de colisiones.
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 forma similar, ¿prefiere trabajar con object-oriented, verbose API (Box2D) o functional, highly abbreviated API (Chipmunk)?
Base su decisión sobre qué le facilita el trabajo 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 evalúe su influencia en el diseño de su juego si conocen muy bien el diseño de su propio juego y los algoritmos internos de los motores de física.
Lo hice en un juego recientemente y no lo recomendaría en absoluto. Cocos2D tiene serios problemas con las vistas superpuestas, como la notificación de inicio de sesión de Game Center o cualquier notificación del sistema iOS 5 donde su método de actualización omita algunos fotogramas, lo que ocasiona un efecto de "efecto túnel" que Andy describió en su respuesta. A menos que tenga objetos grandes moviéndose lentamente, debe usar un motor de física con detección de colisión decente. En el caso de Cocos2D, probablemente sea mejor usar Box2D. –
Según this answerChipmunk no es compatible con la Detección de colisión continua, pero Box2D sí. Esto es importante para evitar el "efecto túnel" (objetos que pasa ligeramente por unos de otros cuando se mueven a altas velocidades)
Esto se aclara por el comentario de Steffen Itterheim en su Box2D vs Chipmunk FAQ: Si va a tener movimiento muy rápido de objetos físicos, por ejemplo, "Bullets", considere usar Box2D ya que puede hacer colisiones barridas, también conocidas como integración de colisión continua, para evitar que los objetos en rápido movimiento penetren profundamente o incluso hagan un túnel a través de otros objetos.
El Chipmunk Collision Detection habla de un separate()
devolución de llamada. 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 un very negative opinion sobre el uso de Box2D para un juego de evasión Mi juego actual está utilizando Box2D, y me gustaría que he usado Chipmunk con ella ... Sobre todo porque Box2D tiene dos problemas graves, que se exacerban en mi juego: En primer lugar, tiene un error REALMENTE VIEJO donde los objetos "se enganchan" en las esquinas, mi juego es un juego de ruptura, por lo que cuando la bola "rueda" a lo largo de una pared, a veces se engancha y se tira lejos de la pared, mucha gente pregunta ¿Por qué mi física de juegos parece "aleatoria"?
Conclusión: Estoy confundido también.
- 1. Cocos2d + Box2D o Chipmunk
- 2. Chipmunk Physics o Box2D para C++ 2D Game Engine?
- 3. Pregunta de desarrollo de juego de iPhone 2d conceptual. ¿Cuarzo? ¿Cocos2d? Chipmunk? Box2d?
- 4. Detección de colisión Chipmunk
- 5. Mejor algoritmo para detección de colisiones eficiente entre objetos
- 6. ¿Solamente está integrando la detección de colisiones Box2D en mi motor 2d?
- 7. detectar la colisión inicial de dos cuerpos box2d sin colisión continua
- 8. ¿Cómo detectar colisión pero no colisionar en box2d?
- 9. ¿Agregar Cocos2D solo al proyecto ya existente?
- 10. Farseer o Box2D? Implementación de física de tirador de arriba hacia abajo
- 11. Una consulta de medios confiable para detectar solo iPad (o en el mejor de 1024x768 dispositivos móviles)
- 12. Enhebrar Box2D con pthreads
- 13. soapClient usa SoapFault o Exception o ambos para detectar Error?
- 14. estructura de datos y el algoritmo para detectar colisiones de mover objetos de forma irregular
- 15. ¿Cuál es la mejor manera de implementar la detección de colisiones unidimensionales?
- 16. ¿Qué es un buen algoritmo de detección de colisiones en 2D rectángulos solo?
- 17. Boost.Thread o solo :: hilo?
- 18. grupos de colisión box2d
- 19. Quadtree para detección de colisiones 2D
- 20. modos cocos2d, box2d y retina: ¿rendirse o intentar que funcione?
- 21. Fricción en Box2d
- 22. Agregar elementos SVG o HTML5 existentes a Box2D World
- 23. ¿Es mejor el subdominio o una subcarpeta?
- 24. Detección de colisiones poligonales 2D
- 25. Detección de colisiones triangulares en espacio 2D
- 26. Esquema DTD o XML. ¿Cuál es mejor?
- 27. Python OpenCV Box2D
- 28. Apache2: mod_wsgi o mod_python, ¿cuál es mejor?
- 29. ¿Qué os es mejor para el desarrollo: Debian o Ubuntu?
- 30. ¿Es mejor usar XNodeEqualityComparer o XElement.DeepEquals para comparar objetos xml?
Si no desea manejar la física, ¿por qué incluir una biblioteca completa para hacerlo? – alex
Aunque no necesito la física, me gustaría tener un sistema de detección de colisiones fácil de usar, así que no tengo que escribir el mío. Incluir un juego de herramientas no debería ser un gran problema. –
Una pregunta bastante subjetiva, la "mejor" es la que puede aprender más rápido y comprender mejor. –