¿Por qué mi serpiente no se mueve correctamente? h es la cabeza. Los segmentos siempre parecen colapsar entre sí y se ajustan a las coordenadas principales. Pensé que sería tan simple como quitarlo de atrás y agregarlo al frente, pero supongo que no. ¿Alguna ayuda?
this.segments.forEach(seg => s.setPixel(seg.x, seg.y, 1)); const h = [...this.segments][0]; hx += this.vX; hy += this.vY; this.segments.unshift(h); this.segments.pop();Creo que tal vez el problema es que no estás clonando correctamente la cabeza.
const h = [...this.segments][0]; Lo anterior asigna el primer elemento en una matriz recién creada que todavía tiene exactamente los mismos objetos dentro. Intenta usar el método Object.assign() :
this.segments.forEach(seg => s.setPixel(seg.x, seg.y, 1)); const h = Object.assign({}, this.segments[0]); hx += this.vX; hy += this.vY; this.segments.unshift(h); this.segments.pop();https://www.samanthaming.com/tidbits/70-3-ways-to-clone-objects/#_1-using-spread https://www.samanthaming.com/tidbits/70-3-ways-to- clonar-objetos/#_2-utilizando-objeto-asignar