private void FixedUpdate() { //looking direction for the near food Vector3 vectorToNearFood = getVectorToNearFood(); Vector3 vectorToNearCell = getVectorToNearCell(); if (vectorToNearFood.magnitude > 0 || vectorToNearCell.magnitude > 0) { //double[] direction2d = getGenom().neuralNetwork.feedForward(new double[3] { vectorToNearFood.normalized.x, vectorToNearFood.normalized.z, genome.size }); //Vector3 direction3d = new Vector3((float)direction2d[0], 0, (float)direction2d[1]); //float force = (float)direction2d[2]; Vector3 direction3d = genome.getVectorToGoal(vectorToNearFood, vectorToNearCell); direction3d.y = 0; float force = 1; Vector3 movement = direction3d.normalized * getGenom().getMaxSpeed() * force * Time.deltaTime; Vector3 newPosition = transform.position + movement; //Debug.DrawLine(transform.position, transform.position + vectorToNearFood, Color.green); genome.doStep(force, Time.deltaTime); if (genome.isDied()) { Destroy(this.gameObject); } float currentScale = transform.localScale.y; float newScale = 1 + (genome.size / 5); transform.localScale = new Vector3(newScale, newScale, newScale); if (newScale > currentScale) { newPosition.y = newScale; } transform.position = newPosition; } }