Estou querendo criar uma corda que possa colidir com objetos como no seguinte vídeo do youtube:
Eu estou pensando que você implementa a integração de verlet que usa pontos e conecta esses pontos com linhas. Estou tentando descobrir que tipo de detecção de colisão você aplicaria à corda para obter o efeito no vídeo.
Eu estou pensando que você teria que fazer algum cd para cada ponto. Eu gostaria de usar o box2D, por isso estou pensando em tornar cada ponto um corpo rígido? Qualquer conselho seria apreciado.
collision-detection
box2d
rope-physics
Joey Green
fonte
fonte
Respostas:
Como você está usando o Box2D, você pode criar uma série de retângulos e usar as juntas do Box2D para juntá-las. Lá você tem sua corda.
Para evitar cantos saindo de uma corda dobrada, posso imaginar duas opções:
Aviso: nunca tentei fazer isso sozinho, mas não vejo como uma série de retângulos unidos pode falhar quando o vídeo que você postou exibe praticamente a mesma coisa disfarçada.
Edit: Acabei de ver PaulZ e percebi a mesma coisa. Vá ler o comentário dele sobre a questão também.
fonte
Um rápido Google jogou isso aqui em cima . Uma demonstração, descrição e código (em Flash) usando o Box2D para implementar uma corda simples. A corda colide consigo mesma e com o bloco no topo da cena.
fonte
Aqui está o que eu faria, tornasse cada ponto da linha um círculo, fiz pontos suficientes para que os círculos se sobreponham. Amarre cada ponto ao seu vizinho, em vez de colisão padrão, esse vínculo deve fazer com que os pontos fiquem a uma distância fixa um do outro.
Não conheço o Box2D, mas acho que a funcionalidade necessária está lá.
fonte
Originalmente, o Box2D tinha uma demonstração de ponte de corda feita de caixas finas unidas com restrições ponto a ponto; esse seria um bom lugar para começar (não sei se ele ainda é fornecido com essa demonstração, mas seria fácil recriar).
É fácil implementar a corda como partículas com restrições de distância, independentemente de um simulador de corpo rígido (como você mencionou, usando um esquema de integração e solução de restrições Verlet como o descrito neste artigo: http://www.gamasutra.com/resource_guide/ 20030121 / jacobson_pfv.htm ), mas se você deseja que corpos rígidos reajam à sua corda (como no vídeo, com a caixa pendente), fica muito mais complicado. Eu começaria com um conjunto abrangente de ferramentas como o Box2D e trabalharia para trás, em vez de tentar construir a partir de partículas.
fonte
Lembro-me deste jogo Allegro: Cupido , do SpeedHack 2002. Ele contém uma implementação para cordas que colidem com o cenário. Consulte as classes PhysParticles e HeartTrails no arquivo heart_tails.cpp em seu código-fonte .
fonte