예제 #1
0
    public override void CollectObservations()
    {
        UpdateTargetObs();

        AddVectorObs(targetPolarAngle / 180f);                // 2
        AddVectorObs(Util.Sigmoid(targetDistance) * 2f - 1f); // 1
        AddVectorObs(NormalizeSpeed(drone.CrntSpeed));        // 1
        AddVectorObs(drone.CrntDir.y);                        // 1 pitch
        AddVectorObs(rayDetection.CastRays(drone, 10f));
    }
예제 #2
0
    public override void CollectObservations()
    {
        UpdateTargetObs();

        AddVectorObs(targetPolarAngle / 180f);                // 2
        AddVectorObs(Util.Sigmoid(targetDistance) * 2f - 1f); // 1
        AddVectorObs(NormalizeSpeed(drone.CrntSpeed));        // 1
        AddVectorObs(drone.CrntDir.y);                        // 1 pitch

        if (detectionMode == DetectionMode.Raycast)
        {
            AddVectorObs(rayDetection.CastRays(drone, 10f));
        }
        else
        {
            cam.transform.position = drone.Transform.position - drone.CrntDir;
            cam.transform.rotation = Quaternion.LookRotation(drone.CrntDir);
        }
    }