I'm doing a point and click strategy game. I can make the user select the unit, it generates a grid based on how many houses the unit can walk and DELETE the houses that have locks (like trees and mountains). However, look at the result:
Consideringthatthisunitwalks3units,itcouldnothaveavailableforselectionthehouseshighlightedbelow.
IsearchedforPathfinding,butIdonotknowifthewayImadethepathblocksarecompatible.
CURSORCODE
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class cursorSelection : MonoBehaviour {
public string unidadeSelecionada = "nenhuma";
private int botaoAndar = 0;
private int botaoInfo = 0;
private int acabaTurno = 0;
public GameObject ninjaHolder;
public GameObject samuraiHolder;
public GameObject spearmanHolder;
public GameObject archerHolder;
public GameObject alvoLocal;
public bool todosJogaram = false;
public bool cliqueBloqueado = false;
public bool escolherLocal = false;
// LISTA DE Unidades INT
// 0 - nenhum
// 1 - ninja
// 2 - samurai
// 3 - spearman
// 4 - archer
//
// LISTA de ACABATURNO
// 0 - Faltam movimentos
// 1 - Movimentos encerrados
private void OnTriggerStay2D(Collider2D other)
{
if (Input.GetMouseButtonDown(0) && cliqueBloqueado == false)
{
mostraMenu(other.name);
}
}
private void Update()
{
if (Input.GetMouseButtonDown(1))
{
cliqueBloqueado = false;
escondeMenu();
}
}
public void escondeMenu()
{
GameObject[] enemies = GameObject.FindGameObjectsWithTag("alvoslocais");
foreach (GameObject enemy in enemies)
GameObject.Destroy(enemy);
}
public void mostraMenu(string unidade_selecionada)
{
switch (unidade_selecionada)
{
case "samurai":
samuraiHolder = GameObject.Find("samurai");
mostraMovimento(samuraiHolder);
unidadeSelecionada = unidade_selecionada;
cliqueBloqueado = true;
Debug.Log("entrou samurai");
break;
case "ninja":
Debug.Log("entrou ninja");
break;
case "spearman":
Debug.Log("entrou spear");
break;
case "archer":
Debug.Log("entrou archer");
break;
}
}
public void checaSeTodosJogaram()
{
}
public void mostraMovimento(GameObject personagem)
{
float numMovimento = 0;
switch (personagem.name) {
case "samurai":
numMovimento = personagem.gameObject.GetComponent<samuraiMove>().valorMovimento;
break;
/*case "ninja":
numMovimento = personagem.gameObject.GetComponent<ninjaMove>().valorMovimento;*/
}
int contadorInterno = 0;
GameObject TESTE;
for (int j = 0; j <= numMovimento; j++)
{
int u = 0;
int i = 0;
int o = 0;
int p = 0;
//Cria o quadrante 1
while (u <= (numMovimento - j))
{
TESTE = Instantiate(alvoLocal, new Vector3(personagem.transform.position.x + j, personagem.transform.position.y + u, 0), Quaternion.identity);
u++;
}
//Cria o quadrante 2
while (i <= (numMovimento - (j+1)))
{
TESTE = Instantiate(alvoLocal, new Vector3(personagem.transform.position.x - (j+1), personagem.transform.position.y + i, 0), Quaternion.identity);
i++;
}
//Cria o quadrante 3
while (o < (numMovimento - (j + 1)))
{
TESTE = Instantiate(alvoLocal, new Vector3(personagem.transform.position.x - (j+1) , personagem.transform.position.y - (o +1), 0), Quaternion.identity); //direita
o++;
}
//Cria o quadrante 4
while (p < (numMovimento - (j)))
{
TESTE = Instantiate(alvoLocal, new Vector3(personagem.transform.position.x + (j), personagem.transform.position.y - (p + 1), 0), Quaternion.identity); //direita
p++;
}
contadorInterno = contadorInterno - 1;
}
escolherLocal = true;
}
}