essas as que eu pensei foram:colocar varios triggers ao longo da pista e verificar se o objeto esta dentrodeles (solucao facil e rapida, porem nada otimizado), triggers ao redor dapista e quando o objeto tocasse e destocasse consideraria fora... (vou parar poraqui porque ja deu para perceber que isso nao funcionaria de maneira alguma) eoutra e que voce verificaria por imagem (uma imagem preto e branco no fundo ese o objeto esta em cima do branco, esta dentro, se esta em cima do preto, estafora).Claro que, falando cruamente assim, parece necessitar de muito processamento jaque teria que pegar pixel a pixel, frame a frame e verificar com o objeto. Mase possivel otimizar isso de uma maneira simples.O unity tem uma funcao chamada GetPixels() que pega todos os pixels da imagem earmaneza em um array com as respectivas cores.Codigo:1.//Cria um arraydo tipo Color do tamanho da textura2.Color[] arrayTrack = new Color[texture_width * texture_heigth];3.//pega a textura do objeto4.Texture2D temp = (Texture2D)gameObject.renderer.material.mainTexture;5.//aplica-se a funcao6.arrayTrack = temp.GetPixels();Fazendo isso, voce ja nao precisa mais ler pixel a pixel e sim a posicao de umelemento em um array.Assim aparece outro problema: a posicao de um objeto e feita atraves de X e Y(em um plano 2D. Nao e necessario ler a posicao Z do objeto) e o arrayarmazenado nao e multidimensional, entao ele vai de 0 a um numero X.Solucao: transferir os elementos do array para um array multi-dimensional.Codigo:01.//cria-se umarray multi-dimensional com o tamanho da textura02.Color[,] arrayMultTrack = new Color[temp.width, temp.heigth];03.//Chama uma funcao que copiara os dados para o array multi-dimensional04.ConvertMatrix(temp.width, temp.heigth);05. 06.//funcao que transfere dados de array para array multi-dimensional07.void ConvertMatrix(int tamX, int tamY)08.{09.int currentValue = 0;10. for(int i=0; i<tamX; i++)11. {12. for(int j=0; j<tamY; j++)13. {14. arrayMultTrack[i,j] = arrayTrack[currentValue];15. currentValue++;16. }17. }18.}Como ja tem o array multi-dimensional, nao precisa mais do original.Codigo:1.arrayTrack =null;O proximo passo agora e fazer com que a posicao do objeto seja relativa aposicao do array. Para isso, usa-se proporcao entre o tamanho da textura e oplano em que ela esta.Codigo:1.//proporcao entrea textura e o plano2.float propX = temp.width/transform.lossyScale.x;3.float propY = temp.height/transform.lossyScale.y;4. 5.//faz com que o canto superior esquerdo do plano seja a origem - usa-se paracomparar a posicao do objeto com o plano6.Vector2 posZero = new Vector2(transform.position.x-(transform.lossyScale.x/2),transform.position.y-(lossyScale.y/2));Apos isso, compara-se a posicao entre o plano e o objeto e com isso se tem aposicao relativa do objeto em relacao a textura.Codigo:01.//a variavelprecisa ser do tipo inteiro pois ira usar este valor para pegar a cor no array02.int posObjX = Mathf.FloorToInt((objeto.transform.position.x -posZero.x)*propX);03.int posObjY = Mathf.FloorToInt((objeto.transform.position.y -posZero.y)*propY);04. 05.//compara-se agora a posicao do objecto com o array06.if(arrayMultTrack[posObjX, posObjY]==Color.white)07.{08. Debug.log("Dentro");09.}10.else11.{12. Debug.log("Fora");13.}Resumindo: cria-se uma textura preta e branca onde o branco e o tracadodesejado. Coloca-se essa textura em plano e o script nesse plano devera ler ospixels da textura e coloca-los em um array. Transfere os dados do array para umoutro que seja multi-dimensional. Cria-se uma origem na borda do plano eproporcao entre a textura e a posicao do plano. Com esses dois valores epossivel verificar a posicao do objeto em relacao ao plano.O codigo fonte dos dois scripts prontos estao aqui. Os comentarios estao emingles.ReadTrack.cs coloca-se este