Ladrilhos hexagonais e encontrar seus vizinhos adjacentes

Estou desenvolvendo um jogo de tabuleiro 2D simples usando mapas hexagonais de blocos, li vários artigos (incluindo o do gamedev, que são vinculados toda vez que há uma pergunta sobre blocos hexagonais) sobre como desenhar hexágonos na tela e como gerenciar o movimento (apesar de já ter feito muito antes). Meu principal problema é encontrar os blocos adjacentes com base em um determinado raio.

É assim que meu sistema de mapas funciona:

(0,0) (0,1) (0,2) (0,3) (0,4)
   (1,0) (1,1) (1,2) (1,3) (1,4)
(2,0) (2,1) (2,2) (2,3) (2,4)
   (3,0) (3,1) (3,2) (3,3) (3,4)

etc ...

O que eu estou lutando é o fato de que eu não posso simplesmente 'selecionar' os blocos adjacentes usandofor(x-range;x+range;x++); for(y-range;y+range;y++); porque seleciona blocos indesejados (no exemplo que eu dei, selecionar o bloco (1,1) e dar um intervalo de 1 também me daria o bloco (3,0) (os que eu realmente preciso ser (0,1) ( 0,2) (1,0) (1,2) (2,1) (2,2)), que é meio adjacente ao bloco (devido à maneira como a matriz é estruturada), mas não é exatamente o que eu quero Eu poderia simplesmente forçar com força bruta, mas isso não seria bonito e provavelmente não cobriria todos os aspectos da 'seleção do raio'.

Alguém pode me apontar na direção certa aqui?

questionAnswers(2)

yourAnswerToTheQuestion