Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Alguém sabe como girar imagem?

https://editor.p5js.org/Pewol/full/T1SUmYL5M

Eu coloquei carros começando em posições distintas e como há a faixa amarela, então, é uma via de mão dupla. Daí resolvi inverter o sinal de velocidade nas faixas de baixo e funcionou (só que os carros andam de ré). Procurei, mas não achei como inverter uma imagem (ou não consegui implementar. Não queria ter que criar outro arquivo e carregar no sistema, já que é a msm imagem, mas girando ela.

(Obs.: mantive pontos negativos, pois achei mais interessante)

3 respostas

Creio que não exista essa opção amigão. O que você pode fazer é usar um editor de imagens para simplesmente espelhar a imagem atual e aí você salva a imagem espelhada e adiciona ao seu projeto.

OI,tudo bem? eu encontrei essa referência: https://p5js.org/reference/#/p5/rotate ela explica como deve ser realizado, eu fiz assim: ** function draw() {

background(imagemEstrada); mostraAtor(); rotate(45, []); mostraCarro(imagemCarro1,xCarro,yCarro1,larguraCarro,alturaCarro); movimentoCarro(); movimentaAtor();** essa chave dentro do "rotate" fica vazia, ela é usado caso seja uma imagem 3D. Coloquei para meu carro fazer um ângulo de 45. o ângulo positivo, roda sentido horário, negativo anti-horário. Outra coisa que tem que ficar atento, ela rotaciona a posição do carro, meu carro tava lá na parte de cima, quando usei, ele rodou para baixo. Tem que levar isso em consideração. Boa sorte, espero ter ajudado...

Print da minha tela com o carro rotacionado

solução!

Eu havia tentado usar o rotate, rotateY também. Mas não consegui ajeitar de jeito nenhum. Sei que seria mais fácil alterar a imagem manualmente e fazer o upload de mais imagens. Mas, por orgulho, voltei a tentar ver outra forma... não é possível que não exista um meio, já que se você pode mover imagens livremente, você pode manipular etc.

Eu vou dar por encerrado este projeto, mesmo que o produto final não esteja perfeito kkkkkkkkkkkk Mas consegui algo próximo do que queria com a função "scale". Eu apenas pensei "se o scale altera a escala da figura, se eu usar uma escala negativa, ele vai inverter a imagem!".... e não é que funcionou? Mas tive que ajeitar também parâmetros do movimento e acaba havendo uma leve distorção ao reiniciar a posição dos carros, mas ficou "aceitável".

No arquivo principal, eu chamei da seguinte forma no draw:

function draw() {
  background(imagemEstrada);
  ator(); 
  mostraCarro(1);
  movimentaCarro();
  atorAtravessou();
  atorColidiu();
  placarTravessias();
  placarPontos();
  placarColisao();
  scale(-1,1);
  mostraCarro(2);
}

Eu separei a função "mostraCarro" usando parametro, para o "scale" afetar a função posterior apenas.

Já o meu .js que trabalha com os carros, ficou assim após adequar os carros da pista 2 (pista de baixo) para as escalas negativas em X:

let xCarros = [400,600,200,-550,-300,-400];
let yCarros = [40,96,150, 210, 263, 318];
let velocidadeCarros = [2,4,5,3,4,2];
let comprimentoCarros = 50;
let larguraCarros = 40;

function mostraCarro(pista){
  if (pista = 1){
    for(i = 0; i < imagemCarros.length/2; i++){
      image(imagemCarros[i], xCarros[i], yCarros[i], comprimentoCarros, larguraCarros);
    }
  }
  if (pista = 2) {
    for(i = imagemCarros.length/2; i < imagemCarros.length; i++){
      image(imagemCarros[i], xCarros[i], yCarros[i], comprimentoCarros, larguraCarros);
    }
  }
}

function movimentaCarro(){
  for(i = 0; i < xCarros.length; i++){
   if(i<3){
      xCarros[i] -= velocidadeCarros[i];
      if(xCarros[i] < -15){
        xCarros[i] = 700;
      }
    }
    else{
      xCarros[i] -= velocidadeCarros[i];
      if(xCarros[i] < -800){
        xCarros[i] = 0;
      }
    }
  }
}

Como ficou a imagem: Insira aqui a descrição dessa imagem para ajudar na acessibilidade