Pergunta

Estou trabalhando em um jogo de plataformas para o iPhone que está usando o Box2D e o Cocos2D.

Estou tentando descobrir uma maneira de criar um comportamento semelhante para o meu personagem controlado, como é encontrado no Sonic the Hedgehog Games, mas manter o uso da Biblioteca de Física Box2D, como eu quero projéteis e alguns objetos de nível para se comportar de acordo com a física realista, Juntamente com certas situações envolvendo o caractere controlado (saltando, entrando em objetos, etc.).

Os principais problemas que estou encontrando estão mantendo o personagem no chão ao passar por curvas convexas e manter um senso de contato com o chão até que uma distância significativa seja alcançada. Eu só quero que o personagem reaja aos comandos esquerda e direita quando estiver no chão, mas minha forma tende a deixar o solo ao passar por curvas leves, de modo que o tempo de reação seja atrasado brevemente até que nos contacte restabelecido. Visualmente, não há separação, mas é grande o suficiente para mudar o estado de estar no chão ou não. Além disso, o personagem não "abraça" curvas maiores do jeito que eu gostaria.

Tentei exercer uma força descendente adicional quando está no chão, mas não funciona com rapidez suficiente para curvas maiores, e forças grandes o suficiente para serem eficazes interferem no movimento regular do personagem. Alguma ideia sobre essas questões?

Foi útil?

Solução

Na minha experiência, obter um verdadeiro sentimento de console exige que você crie uma física irrealista, especialmente para os personagens dos jogadores.

Acredito que no Box2D você pode usar impulsos para invadir o sistema de movimento, enquanto ainda tem acesso à detecção de colisão. Foi isso, ou fazer do seu personagem um objeto que não se move, e fazer o movimento sozinho. Eu esqueço o que parecia funcionar para mim. Já se passaram alguns meses;) acredito que também fiz algumas anúncios de vetores no eixo y em alguns casos para corrigir bugs (inclinações?).

Se o seu movimento estiver funcionando corretamente para o caso geral, você poderá fazer movimento quando, em contato com o solo, com uma curva, seja um caso especial, onde você mesmo lida com a física e sai apenas no mundo real para detecção de colisão.

Outra opção é fazer com que a maioria dos objetos use física "falsa" e use Box2D apenas para detecção de colisão ou para objetos "realistas".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top