void Update()
        {
            if (m_gameController == null)
            {
                return;
            }

            Transform upGround   = m_gameController.cloestGround.GetChild(0);
            Transform downGround = m_gameController.cloestGround.GetChild(1);

            // Insert the inputs
            genomeController.Reset();
            genomeController.Input(new float[] {
                transform.position.x,
                transform.position.y,
                rigidbody2D.velocity.x,
                rigidbody2D.velocity.y,
                upGround.position.x,
                upGround.position.y,
                downGround.position.x,
                downGround.position.y,
            });

            genomeController.StartProcess();

            // Process the outputs
            if (genomeController.GetOutput(0) > 0)
            {
                Jump();
            }
        }
        private void Update()
        {
            genomeController.Reset();
            genomeController.Input(new float[] {
                transform.position.x,
                transform.position.y,
            });
            genomeController.StartProcess();

            m_left  = genomeController.GetOutput(0) > 0;
            m_right = genomeController.GetOutput(1) > 0;
            m_jump  = genomeController.GetOutput(2) > 0;
        }
Ejemplo n.º 3
0
    public void DataProcess()
    {
        Genometype.NodeGenes[] nodes = new Genometype.NodeGenes[] {
            new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 0),
            new Genometype.NodeGenes(Genometype.NodeGenes.Types.Hidden),
            new Genometype.NodeGenes(Genometype.NodeGenes.Types.Output),
        };

        Genometype.ConnectionGenens[] connections = new Genometype.ConnectionGenens[] {
            new Genometype.ConnectionGenens(0, 1, 0.1f),
            new Genometype.ConnectionGenens(1, 2, 1f, Genometype.ConnectionGenens.OperatorType.Plus),
        };

        GenomeController controller = new GenomeController(new Genometype(nodes, connections));

        // Test get output
        controller.Reset();
        Assert.AreEqual(controller.GetOutput(0), 0);

        // Test insert input and process data
        controller.Input(new float[] { 0.9f });
        controller.StartProcess();
        Assert.AreEqual(controller.GetOutput(0), 1.09f);
    }