Exemplo n.º 1
0
    public override void CollectObservations()
    {
        // Ray Perception
        //var rayDistance = 50f;
        //float[] rayAngles = { 0f, 45f, 90f, 135f, 180f, 110f, 70f, -180 };
        //var detectableObjects = new[] { "Player", "wall" };
        //rays = m_Self.m_RayPerception.Perceive(rayDistance, rayAngles, detectableObjects, 0f, 0f);
        //AddVectorObs(rays);

        Vector3 normalizedPosSelf = SimpleGameManager.GetNormalizedPosition(transform);

        AddVectorObs(normalizedPosSelf.x);
        AddVectorObs(normalizedPosSelf.z);

        Vector3 normalizedPosOther = SimpleGameManager.GetNormalizedPosition(m_Other.m_Movement.transform);

        AddVectorObs(normalizedPosSelf.x);
        AddVectorObs(normalizedPosSelf.z);

        // Distance to other
        float distance = Vector3.Distance(normalizedPosSelf, normalizedPosOther);

        AddVectorObs(distance);

        // Rotation
        float rot           = transform.rotation.eulerAngles.y;
        float normalizedRot = ((rot % 360) / 360);

        AddVectorObs(normalizedRot);
    }