Код для движения к цели?
const player = {
	x: 0,
	y: 0,
	speed: 3
};
const target = {
	x: 100,
	y: 300
};

// Ваша функция для обновления
const update = () => {
	const angle = Math.atan2(target.y - player.y, target.x - player.x);
	const distance = Math.hypot(target.x - player.x, target.y - player.y);

	if (distance > player.speed) {
		player.x += Math.cos(angle) * player.speed;
		player.y += Math.sin(angle) * player.speed;
	} else {
		player.x += Math.cos(angle) * distance;
		player.y += Math.sin(angle) * distance;
	}

	requestAnimationFrame(update);
};
update();
snippet
Пусть существо имеет координаты Sx и Sy, а еда - Ex и Ey.

Цикл: 
вычисляем вектор на еду: Rx=Ex-Sx , Ry=Ey-Sy ;
вычисляем длину вектора L=sqrt(Rx**2+Ry**2) ;
если длина вектора = 0, то
мы приехали, начинаем кушать (выход из цикла);

иначе если длина вектора больше шага T, то
нормируем вектор на еду: Rx=Rx/L*T , Ry=Ry/L*T .

делаем шаг: Sx+=Rx , Sy+=Re ;
переходим к следующей итерации цикла ;


Для неподвижной еды и/или постоянного шага T вычисления можно оптимизировать (например, сразу вычислить нужное количество шагов и организовать счётчик по циклу; и/или один раз вычислить нормированный вектор). Однако, надо быть осторожным с округлением координат особенно если координаты целочисленные, а шаг T маленький - тогда существо может очень сильно мотать в стороны.