17.6 C
Brasília
domingo, maio 4, 2025

Unidade – Como você detecta bordas em um mapa PNG


Se você estiver procurando uma maneira de determinar em qual área do mapa o usuário clicou ou tem seu cursor, eu recomendaria fazer um mapa colorido e pintar cada área em sua própria cor única. É assim que o Paradox Interactive faz isso em seus jogos, aqui está uma captura de tela de como o mapa do Crusader Kings 3 na verdade Parece sob a alcance:

mapa colorido

Esclarecer isso seria apenas um arquivo .png que reside nos arquivos do jogo. Este arquivo é acompanhado por um arquivo de dados que contém informações sobre cada área, o mais importante é sua cor. Por exemplo, este arquivo pode ser assim:

// Its inside identifier
"area_baravia": {
    // Participant-readable title
    "title": "Baravia",

    // The colour of this space within the picture. On this instance it is simply the hex worth.
    "coloration": "ff0000",

    // Different information you may want
    "isOcean": false,
    ...
},
"area_napoli": {
    ...
}

Depois de ter esses dois arquivos, você só precisa descobrir onde o cursor do mouse do usuário está em relação ao arquivo de imagem e obtenha a cor desse pixel para ver qual área eles estão selecionando. Pseudocode:

var mousePosition = GetMousePosition()
var mousePositionOnImage = TransformToImageCoordinates(mousePosition)
var pixel = GetPixel(mapImage, mousePositionOnImage)
var space = FindAreaWithColor(pixel)

A implementação de GetMousePositionAssim, TransformToImageCoordinatesAssim, GetPixele FindAreaWithColor Todos dependeriam da pilha de tecnologia que você está usando. É provável que exista alguma maneira interna de fazer essa transformação na unidade, não estou familiarizado o suficiente para dar uma resposta específica aqui.

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Stay Connected

0FansLike
0FollowersFollow
0SubscribersSubscribe
- Advertisement -spot_img

Latest Articles