1
resposta

Dúvida na sintaxe

Olá! Estou com dificuldades em entender a sintaxe do seguinte código:

public class Torre : MonoBehaviour 
{
  private void Atira ()
  {
    GameObject pontoDeDisparo =  this.transform.Find ("CanhaoDaTorre/PontoDeDisparo").gameObject;
    Vector3 posicaoDoPontoDeDisparo = pontoDeDisparo.transform.position;
    Instantiate (projetilPrefab, posicaoDoPontoDeDisparo, Quaternion.identity);
  }
}

Mais especificamente em:

GameObject pontoDeDisparo =  this.transform.Find ("CanhaoDaTorre/PontoDeDisparo").gameObject;

Acima, declaramos pontoDeDisparo do tipo GameObject. Minha dúvida refere-se ao caminho do código da atribuição, em:

this.transform

acessamos o transform do objeto que chamou o método Atira(), porém, como que é feita a procura de um gameObject dentro de um transform?

1 resposta

Olá Thiago,

O método Find da classe Transform permite encontrar um GameObject seguindo a hierarquia de objetos que montamos no próprio Unity.

No nosso caso, construímos a nossa torre com um GameObject para representar a torre e então colocamos um outro GameObject dentro da torre para representar o canhão da torre. Por sua vez, colocamos um outro GameObject dentro do canhão da torre para indicar o local onde serão criados os mísseis. Essa hierarquia que construímos é o que estamos acessando quando fazemos:

GameObject pontoDeDisparo =  this.transform.Find ("CanhaoDaTorre/PontoDeDisparo").gameObject;

Perceba que estamos especificando que queremos procurar dentro do transform da torre pelo caminho CanhaoDaTorre/PontoDeDisparo. Perceba que esses são os nomes que demos para os objetos que construímos dentro da nossa torre. Com isso conseguimos recuperar a posição de disparo percorrendo a hierarquia da torre.