Fala, Bruno! Tudo bem contigo?
Se fizermos dessa forma ele vai gerar o seguinte o erro
> p5.js says: image() was expecting p5.Image|p5.Element for parameter #0 (zero-based index), received an empty variable instead. If not intentional, this is often a problem with scope: [https://p5js.org/examples/data-variable-scope.html] at about:srcdoc:171:5. [http://p5js.org/reference/#p5/image]
por justamente trabalhar essas imagens "ativas" no preload.
Até mesmo se colocarmos essa array
dentro da pasta carros também vai gerar o erro!
Agora dentro dessa pasta carros existem, dentro das funções, invocações dessa array
.
Como o p5js
possui o preload
para carregar essas imagens, e inclusive os sons, creio que a biblioteca "obriga" ter esse carregamento de tudo que vai no game dentro do preload.
Entendo seu questionamento, até mesmo para chamar essa array
dentro da pasta carros, mas essa regra do p5js
com as imagens e tudo que vem de arquivos externos, faz com que colocamos dentro do preload
para que haja uma constante, como um looping.
Espero ter ajudado com algo, Bruno!
Um abraço!