Tu pregunta es mas de lógica, a como funciona, hay un truco para esto; y es sumarle los segundo que le corresponde esperar:
for (let i = 0; i < tierra.length; i++) {
setTimeout(() => {
gameScene.addChild(tierra[i]);
}, 1000 + (1000 * i));
}
Te coloco el ejemplo para fines practicos:
for (let i = 0; i < 10; i++) {
setTimeout(() => {
let today = new Date();
console.log(`mirenme soy i ${i} , segundo ${today.getSeconds()}` )
}, 1000 + (i * 1000) );
}
Lo que quieres hacer tambien se puede hacer por promesas pero dependera de la logica anterior; por lo pronto de esta forma es sencilla y practica
Con promesas quedaría mejor porque esperaria efectivamente 1 segundo despues de ejecutarse la primera instruccion (variacion de Francisco Romero)
function ejecutandoPromesas(longitud){
if (longitud == 0){
return 0
}
return new Promise(function (resolve , reject) {
setTimeout(function(){
console.log(longitud )
resolve(ejecutandoPromesas(--longitud))
},1000)
})
}
console.log(ejecutandoPromesas(6))