Estou trabalhando em um jogo em primeira pessoa e tive um problema. No meu jogo, há a arma do jogador sendo renderizada, bem como um retículo no centro da tela - assim:
Primeiro, vamos imaginar que não havia modelo de arma sendo renderizado. Em seguida, disparar a bala é fácil - você apenas gera a bala exatamente onde estão os "olhos" do jogador e usa trig para calcular a velocidade com base na direção que o jogador estiver olhando.
Mas agora, quando adicionamos o modelo da arma ... não podemos apenas gerar a bala onde estão os olhos dos jogadores, precisamos gerá-la na ponta da arma (certo?). Então você faz isso, mas ... como você move a bala de maneira que ela atinja onde quer que o retículo esteja apontando?
Lembre-se de que a bala no meu jogo (na verdade é um foguete, neste caso) estará se movendo devagar o suficiente para que seu movimento possa ser visto; portanto, algumas soluções alternativas que normalmente funcionariam se a bala fosse rápida demais para serem observadas não funcionarão. . Por exemplo, se você não o gerasse para parecer que está saindo da ponta da arma, o jogador definitivamente perceberia isso.
fonte
Respostas:
Faça um raio da câmera através do centro / retículo para o mundo. Descubra em que lugar do mundo ele atinge. Dispare a bala do cano da arma naquele momento, em vez de sair diretamente da arma.
Pontos de bônus por animar as mãos e a arma para apontar nessa direção enquanto mira ao redor para que a bala ainda pareça estar disparando diretamente para fora do cano em vez de sair em ângulo.
Se você fizer a animação, poderá disparar a bala diretamente para fora do focinho sempre. Apenas faça o seu melhor para que a arma aponte no ponto em que o retículo está mirando dentro de limites razoáveis. Também é útil ter dois retículos de uma maneira que, naturalmente, mostre o centro da tela em que o jogador está tentando mirar e o ponto em que a arma está realmente mirando.
Ou você pode mostrar um único retículo que é o local onde a arma estará mirando depois de terminar a animação e disparar a bala nessa direção, em vez do local em que a arma está mirando atualmente em sua animação. Dessa forma, o retículo sempre mostra o que o jogador realmente acertará, mas não fingirá que você pode, por exemplo, atirar em uma parede apenas porque a câmera vê algo que a arma não pode fazer.
Tudo isso foi usado em jogos reais. O que você prefere dependerá do estilo de jogo que você está criando, qual é o trade-off entre simulação e jogo que você deseja, seja multijogador ou não, etc.
fonte
Que tal se livrar do retículo? Então, as balas poderiam sair em linha reta da arma, exatamente como na realidade. Visar a mira significaria mais, pois você alinharia o alvo e o cano da arma (menos alguns centímetros no modelo do jogador).
fonte