Totalmente destrutível em 2D
Eu gostaria de criar um pequeno jogo sobre batalhas na Idade Média. Imagine um mapa 2D gerado por procedimento com rios, campos e um pequeno castelo.
Dois lados. Um jogador vai atacar o castelo e o segundo jogador o defende.
Todo o jogo terá uma visão - de cima para baixo. Gosto desse visual (e talvez simplifique o trabalho).
Imagine o canhão de um jogador se aproximando do castelo e atacando-o. O canhão dispara (por exemplo, em uma torre) e a torre começa a desmoronar. Como tornar esse processo mais interessante? Com vários efeitos (por exemplo, para o local onde a arma caiu de um pedaço de parede, e no telhado da torre houve uma rachadura).
Eu gosto do processo de destruição na edição defenite AE, mas parece o mesmo para todos os tipos de edifícios (mais cedo ou mais tarde eles vão transformá-lo no mesmo monte).
O exemplo do que quero dizer quando digo 2d castelo em vista de cima para baixo:
Como quebrar este castelo em fichas?
PS Espero que você veja o patrono do autor, de seu patrono esta imagem pode ser baixada gratuitamente. Ele tem muitas outras fotos incríveis.
ADICIONE algum guia visual:
Respostas
Física
Tente pensar no que acontece quando uma bala de canhão viajando pelo ar atinge algo. A bola terá uma certa massa e velocidade e, portanto, uma certa quantidade de energia cinética que pode causar danos.
O que acontece com a própria bala de canhão após uma colisão? Ele quica, cai, se quebra, rola, pega fogo ou explode? Ele pode quicar (por exemplo, se atingir o solo em um ângulo rasante), mas se atingir uma parede de pedra, é provável que perca toda a sua energia cinética, caia e talvez role para longe.
O que acontece no ponto de impacto? Uma parede de pedra reage de maneira diferente de um telhado de madeira. E há uma pequena chance de você atingir uma pessoa ou algum equipamento. Conforme mencionado por Zibelas, todas essas coisas podem precisar ser tratadas de forma diferente.
Quanto aos materiais que quebram quando atingidos por uma bala de canhão, você poderia realizar uma simulação detalhada de como o material reage, mas não acho que se encaixará no seu estilo visual e será muito trabalhoso para codificar e executar . Em vez disso, faça algumas simplificações. Lembre-se de alguma física básica: uma bola de canhão tem uma quantidade limitada de energia cinética que pode impactar. Quando essa energia é transferida para o material, há várias maneiras de distribuí-la, incluindo:
- O objeto como um todo pode herdar a energia cinética e, assim, começar a se mover
- A energia pode ser totalmente dissipada como calor
- Uma rachadura pode ser criada
Normalmente, será uma combinação de todos os itens acima. Ok, agora olhando apenas para as fissuras, dependendo do material há uma preferência pela direção da fissura, e uma vez que a fissura comece, provavelmente continuará na mesma direção. Mas os materiais típicos têm impurezas e haverá pontos em que será mais favorável mudar a direção de uma rachadura. Para simular isso, eu usaria o seguinte algoritmo:
- Do ponto de impacto, gaste uma fração da energia para uma rachadura que continua aproximadamente na direção do impacto. A quantidade de energia gasta determina o comprimento dessa rachadura.
- Em seguida, faça uma escolha aleatória no final dessa fenda:
- Mude a direção da rachadura
- Divida em dois ramos, cada um indo em sua própria direção
- Em seguida, avance repetidamente todas as rachaduras até gastar toda a energia.
Você pode ajustar os parâmetros, como a chance de bifurcar uma rachadura, até descobrir que ela gera um padrão de rachadura agradável.
Além disso, você deseja verificar se uma linha de rachadura cruza uma rachadura existente ou se atinge a borda do objeto que está rachando. Nesse caso, haverá um pedaço de material que agora está completamente solto. Você pode decidir dar a ele um pouco de energia cinética de seu orçamento de energia restante e enviá-lo pelos ares.
Renderização
Parece que você pode simplesmente desenhar as linhas de fenda usando uma linha preta com propriedades semelhantes aos contornos usados no desenho do castelo. Mas as rachaduras simplesmente não aparecem de uma vez. Criar uma animação convincente pode ser difícil. No entanto, pense novamente na física do impacto de uma bala de canhão: haverá poeira e partículas finas que serão perturbadas e podem formar uma pequena nuvem parecida com fumaça. Esta nuvem se dissipará em alguns segundos e poderá se mover na direção do vento. A nuvem esconderá a formação de rachaduras, então você não precisa se preocupar com isso. Você também pode fazer algumas pequenas partículas irromperem do ponto de impacto para dar uma aparência mais dinâmica. Deve ser fácil adicionar alguma aleatoriedade a essas coisas, para que tenham uma aparência diferente a cada vez.