Desabafo

Pessoal, vou desabafar.

Estou passando por um problema no meu jogo de corrida de carro, o que acontece é o seguinte:

Existe uma pista (desenhada no paint) e essa pista tem a parte da rua(parte do meio) e nos cantos direito e esquerdo e direito tem a grama, quando o carrinho vai pro canto direito ou esquerdo eu desenho uma poeira atrá dele, mas como eu fiz isso?
Exemplo:quando o carro está na posição 13(o ponto x, horizontal) ele está saindo da pista e indo pra grama , entaum eu pinto a poeira, ou quando está na posição 90(o ponto x, horizontal) , eu faço o mesmo.

Agora , eis o prob.:

Essa pista que eu acabei de mencionar é uma pista reta, ou seja, naum tem curva, entaum dá pra eu tratar essas coordenadas sem problemas,mas quando agora quero fazer curvas, mas seria muito complicado tratar coordenadas pra saber se o carro foi pra grama.
Ex: O carro foi pra direita da tela, quando vou saber se ele chegou na grama? se a pista é curva naum vai ter uma coordenada exata sempre, ele vai variar, determinado momento a grama a direita vai estar na posição 95, depois 98, depois 100, depois 105 e eu naum quero fazer um array gigante pra tratar isso… vai ficar super trabalhoso e irá encher a memória.

Tem como eu saber a cor da tela em determinado lugar? Vamos supor, o carro vai pra posição 80 e aí eu vejo a cor dessa posição, então se for uma cor verde eu vou saber que é a grama.

Alguém tem alguma sugestão?

Minha primeira sugestão: escolha um nome melhor para o tópico. “DESABAFO” não diz nada…

Quanto a saber a cor, você está tentando pegar a cor do Canvas no qual está desenhando ou de uma imagem?

Deixa eu dar uma viajada no seu problema das curvas aí.

Vamos supor que vc tem tres tipos de curvas: a curva leve, a curva media e a curva acentuada.

Na curva leve ela irá invadir a tela em 4 pixels, na curva média 8 e na acentuada 12 (sei lá, to viajando nessas coordenadas).

Então vc pode ter uma constante que marca o x inicial do asfalto. Por exemplo, 5.

Esse 5 é o lado esquerdo do asfalto. 5 + 50 é o lado direito né?

Então na hora de vc testar basta testar a posição do carro com a da pista, algo tipo:

//primeiro vc testa se a curva é leve, media ou acent. Daí vc faz
deslocamento = nivel_da_curva;

if (carro.getX() < X_PISTA + deslocamento || carro.getX() > X_PISTA + 50 + deslocamento)
{
 //desenha a fumaça
}

Este caso aqui a curva é pra esquerda, onde a “barriga” da curva irá pra direita. Sendo assim, a margem esquerda da curva irá pro meio da pista e a margem direita irá pra fora da pista.

Se a curva for pra direita, é só inverter o + por - na hora de trabalhar com o deslocamento.

Acho que por aí dá pra começar a pensar nas curvas…

Boa sorte.

O lance é que durante a variação da pista os pontos podem mudar muito, entaum seriam muitos pontos , naum sei se vc me entendeu , imagine uma curva e o carro podendo ir pra cima , pra baixo e pros lados, vai ser muito trabalhoso de eu identificar os pontos exatos que vaum passar da curva…

Vc entendeu? É que é um pouco difícil de explicar , se eu te mandasse um desenho que daria pra entender melhor.

Cara, é só vc atualizar a variável “posicao” a cada vez que a tela se atualizar. E sempre que houver esta atualização vc confere os cantos da pista, ok?

Valeu fzampa.