コード例 #1
0
        public static float[] GetInputs(FlappyHandler flappy)
        {
            var inputs = new float[NEATHandler.Instance.sevenInputsMode.isOn ? 7 : 3];

            Settings.Instance.inputs = NEATHandler.Instance.sevenInputsMode.isOn ? 7 : 3;
            var flappyPosition = flappy.transform.position;

            inputs[0] = flappy.passedPipes < PipeSpawner.Instance.pipes.Count
                ? (PipeSpawner.Instance.pipes[flappy.passedPipes].transform.position.x - flappyPosition.x) / 5
                : 1;
            inputs[1] = (flappyPosition.y - (flappy.passedPipes < PipeSpawner.Instance.pipes.Count
                             ? PipeSpawner.Instance.pipes[flappy.passedPipes].transform.position.y +
                                             PipeSpawner.Instance.pipes[flappy.passedPipes].y / 2
                             : 0)) / 5;
            inputs[2] = flappy.flappyController.rb.velocity.y / 10;

            if (!NEATHandler.Instance.sevenInputsMode.isOn)
            {
                return(inputs);
            }

            inputs[3] = (flappyPosition.y - (flappy.passedPipes < PipeSpawner.Instance.pipes.Count
                             ? PipeSpawner.Instance.pipes[flappy.passedPipes].transform.position.y +
                                             PipeSpawner.Instance.pipes[flappy.passedPipes].complementaryPipe.y / 2
                             : 0)) / 5;
            inputs[4] = flappy.passedPipes + 1 < PipeSpawner.Instance.pipes.Count
                ? (PipeSpawner.Instance.pipes[flappy.passedPipes + 1].transform.position.x - flappyPosition.x) / 10
                : 1;
            inputs[5] = (flappyPosition.y - (flappy.passedPipes + 1 < PipeSpawner.Instance.pipes.Count
                             ? PipeSpawner.Instance.pipes[flappy.passedPipes + 1].transform.position.y +
                                             PipeSpawner.Instance.pipes[flappy.passedPipes].y / 2
                             : 0)) / 10;
            inputs[6] = (flappyPosition.y - (flappy.passedPipes + 1 < PipeSpawner.Instance.pipes.Count
                             ? PipeSpawner.Instance.pipes[flappy.passedPipes + 1].transform.position.y +
                                             PipeSpawner.Instance.pipes[flappy.passedPipes + 1].complementaryPipe.y / 2
                             : 0)) / 10;

            return(inputs);
        }
コード例 #2
0
 public static float[] GetPixelsInputs(FlappyHandler flappy) =>
 PixelsRetriever.Instance.RetrievePixels(flappy.gameObject);