예제 #1
0
    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;
        }
    }