public override void OnActionReceived()

in RollerBall/Assets/RollerAgent.cs [72:113]


    public override void OnActionReceived(float[] vectorAction)
    {
        // Actions, size = 2
        Vector3 controlSignal = Vector3.zero;
        controlSignal.x = vectorAction[0];
        controlSignal.z = vectorAction[1];
        rBody.AddForce(controlSignal * speed);

        // Rewards
        float distanceToTarget = Vector3.Distance(this.transform.localPosition, Target.localPosition);
//        float distanceToObstacle = Vector3.Distance(this.transform.localPosition, Obstacle.localPosition);

        // Reached target
        if (distanceToTarget < 1.42f)
        {
            if (IsSimulationMode()) SaveLog(1);
            SetReward(1.0f);
            EndEpisode();
            return;
        }

        // Collided with obstacles
        foreach (var actor in obstacle.obstacleObjs)
        {
            float distanceToActor = Vector3.Distance(this.transform.localPosition, actor.transform.localPosition);
            if (distanceToActor < 1.42f)
            {
                if (IsSimulationMode()) SaveLog(2);
                SetReward(-1.0f);
                EndEpisode();
                break;
            }
        }

        // Fell off platform
        if (this.transform.localPosition.y < 0)
        {
            if (IsSimulationMode()) SaveLog(3);
            SetReward(-1.0f);
            EndEpisode();
        }
    }