Considerando a imagem acima com blocos divididos em caixas de 32x32, eu tenho uma entidade que está marcada para 'agredir' jogadores próximos que se aproximam dela. Eu gostaria que esse monstro perseguisse o jogador idealmente (e continuasse perseguindo o jogador por um tempo). Atualmente, meu único movimento é feito, um interpolador simples para entidades remotas e isso funciona porque as lacunas entre as atualizações de movimento são bastante pequenas.
Não posso dizer com sucesso ao cliente que o monstro quer passar para a posição em que está, pois isso fará com que a entidade se mova muito mais rápido do que deveria (isso provavelmente pode ser resolvido com o uso de matemática para a interpolação). -eficiente), mas o mais importante é que não parece realista e pode cortar paredes! Eu não quero simular todo o movimento no servidor, se puder ser evitado ... embora eu ache que sim, mas isso ainda não resolveria o problema do recorte. Suspeito que a solução envolva encontrar o caminho e enviar atualizações periódicas do nó do cliente e deixá-lo simular o movimento, mas não tenho certeza.
Obrigado!
fonte
Na verdade, isso é simples de fazer. A direção do movimento será a posição alvo menos a posição atual. Tudo o que você precisa fazer é escalar esse vetor para a velocidade de movimento que você realmente deseja. Repita todos os quadros.
Você precisa simular o movimento no servidor. De que outra forma você saberá que todos os jogadores estão tendo o mesmo comportamento?
Você precisará de algumas informações básicas sobre o caminho. A * é o padrão. Você pode calcular um caminho para o destino e, em seguida, segui-lo é simplesmente o caso de definir vetores de movimento como acima. (Ou você pode usar comportamentos de direção como na resposta do Byte56, que é essencialmente a mesma coisa com alguns extras).
fonte