Oi, José!
Acredito que o problema esteja nas informações dentro do parenteses do collideRectCircle. O comando segue uma lógica e uma ordem para obter as informações, então, casa espaço (cada vírgula) corresponde a uma informação que ele vai usar. Veja:
- Espaço 1: o valor x* do *carro (do retângulo);
- Espaço 2: o valor y* do *carro (do retângulo);
- Espaço 3: o comprimento do carro (do retângulo);
- Espaço 4: a altura do carro (do retângulo);
- Espaço 5: o valor x* da *vaca (do ator);
- Espaço 6: o valor y* da *vaca (do ator);
- Espaço 7: o diâmetro da vaca (do ator).
OBS: Com espaço, quero dizer o valor de cada "casa", ou seja, cada item colocado antes da vírgula.
Então, o que acontece no seu código é o seguinte: mesmo você colocando o valor de cada carro, um por um, dentro do comando, ele ainda vai entender como um comando só para apenas um item. Em outras palavras, não está criando uma colisão para cada carro, e sim uma colisão utilizando os valores dos outros carros. Caso opte por não criar uma lista, você teria que criar um comando verificaColisao() para cada carro que você criar, então seria necessário repetir a função SETE VEZES.
Tente da seguinte maneira primeiro e veja se funciona em apenas um dos carros:
function verificaColisao(){
colisao = collideRectCircle(xCarro, yCarro, comprimentoCarro, alturaCarro, xAtor, yAtor, 15) }
if (colisao) {
colidiu();
}
function colidiu(){ yAtor = 366; }
Com esse código, deve funcionar a colisão em pelo menos um dos carros. Depois, caso queira, é só criar outra função usando o xCarro2 e yCarro2, e assim vai.
OBS²: Lembre-se sempre de chamar a função no sketch.