Como posso prever colisões jogador-projétil no Box2D?

8

Estou fazendo um jogo de tiro em tempo real com o Box2D como o mecanismo de física. A jogabilidade é principalmente sobre trajetória, como Angry Birds. Quero fazer um efeito de câmera lenta e mover a câmera para o jogador quando ele for morto, mas o efeito deve começar quando a pedra ainda estiver no ar, antes que a colisão realmente aconteça.

A magnitude do dano é calculada apenas em colisão, com base no impulso. Por ser um jogo em tempo real, o jogador deve poder mover o corpo físico de seus personagens sem atraso.

Como posso prever a morte deles? Isso é possível? Eu poderia transmitir um raio, mas e se outro objeto se mover para bloquear seu caminho?

insira a descrição da imagem aqui

Arch1tect
fonte
11
Nota teórica: O futuro dos sistemas não determinísticos é, por definição, imprevisível. Veja o gato de Schrödinger , substituindo mentalmente "gato" por "personagem do jogador".
Anko
11
@ Anko idéia muito interessante! Eu nunca tentei isso. Mas o jogador ainda pode se mover, para onde ele vai ou até onde ele vai não é previsível. No entanto, eu sei que a velocidade de movimento do jogador assim que quando a pedra é perto o suficiente, eu sei que não vai perder ...
Arch1tect
11
(1/2) IMO seria muito mais interessante se você usasse um raycast para ver se uma colisão tem uma chance decente de ocorrer, em seguida, inicie o zoom da câmera e reduza a velocidade do jogo. Para cada quadro, refaça o raio lançado para ver se a pedra ainda está em rota de colisão. Se a pedra for interceptada, a câmera deverá voltar ao seu estado normal, mas para cada quadro em que a colisão ainda é provável, aumente um pouco mais a câmera.
NauticalMile
11
(2/2) Isso matará dois coelhos com uma cajadada (jogo de palavras não intencional): você não precisará fazer 'olhar para o futuro', e os jogadores experimentarão a emoção de quase erros, bem como (ou pastoreio) hits. Na verdade, eu poderia argumentar que seus efeitos se tornarão chatos se o jogador souber que, toda vez que a câmera aumenta o zoom e o jogo diminui, ele está condenado. Ele vai querer pular a 'animação' imediatamente e tentar novamente. Mas se houver uma chance de ele escapar da pedra, pode apostar que ele estará roendo as unhas esperando para ver o resultado.
NauticalMile
11
(1/2) @NauticalMile ei, também é uma boa ideia !! Receio que ele não se aplique diretamente ao meu jogo porque o jogador é atingido com muita frequência; portanto, aumentar o zoom e a câmera lenta podem interromper demais o jogo em andamento.
Arch1tect

Respostas:

2

Por que calcular a trajetória dos sons / efeitos de desaceleração?

Se você dividir o ato de diminuir a velocidade da câmera e reproduzir efeitos em seções após a aproximação de sua vítima mole, poderá essencialmente reproduzi-los na condição de proximidade.

Este é um ótimo exemplo que vem à mente. Os efeitos de desaceleração da proximidade empregados no Peggle

A bola se aproxima do pino e começa a desacelerar. Na verdade, isso se baseia completamente fora da proximidade, sem trajetória envolvida. Se ele se aproximar o suficiente do último pino, ele começa a tocar bateria e diminui a velocidade do jogo; se não acertar o pino e ficar fora do alcance, você ouvirá "Awww .. :(" e tudo voltará ao normal, mas se colidir, você receberá a abertura completa e a tela vencedora.

Essa é uma ótima técnica se você aprovar fazer o seu jogador "Vaca sagrada, eu quase fui atingido!". Se você tiver um som / efeito de inicialização para uma câmera mortal que será executada antes do impacto, basta acioná-la quando a pedra estiver próxima o suficiente para que, mesmo que o jogador se mova à velocidade máxima em qualquer direção - ele tenha uma grande mudança de esmagamento. .

Digamos que sua pedra esteja caindo e você deseja iniciar o efeito de desaceleração a ~ 4m do player: você começa acionando a desaceleração, move a câmera e começa a focar no player - se a pedra for interrompida por outros detritos, basta sair do foco mais lento e seu player continua normalmente.

insira a descrição da imagem aqui

É basicamente assim que o Peggle lida com o efeito de desaceleração e aciona a música do jogo final e é perfeitamente viável para uso em sua câmera / rock / squishy, ​​antecipando o cenário da cena da morte.

Tom 'Blue' Piddock
fonte