Esempio n. 1
0
    public override Brain.SensedInfo Sense()
    {
        Brain.SensedInfo si = new Brain.SensedInfo();

        GameObject player = GameObject.Find("Player");

        float dist = (player.transform.position - transform.position).magnitude;

        if (dist <= distance && Vector3.Angle(transform.forward, player.transform.position - transform.position) <= SightAngle
            && !Physics.Raycast(transform.position, (player.transform.position - transform.position + transform.up).normalized, dist, 1 << LayerMask.NameToLayer("Map")))
        {
            si.AlertingFactor = 1.0f;
            si.CertaintyIsPlayer = 1.0f;
            si.CertaintyOfDirection = 1.0f;
            si.CertaintyOfDistance = 1.0f;
            si.SensedDirection = (player.transform.position - transform.position).normalized;
            si.SensedDistance = dist;
        }
        else
        {
            si.AlertingFactor = 0.0f;
        }

        return si;
    }
Esempio n. 2
0
    public override Brain.SensedInfo Sense()
    {
        Brain.SensedInfo result = new Brain.SensedInfo();
        GameObject player = GameObject.Find("Player");

        result.CertaintyIsPlayer = 1;
        result.CertaintyOfDistance = 1;
        result.CertaintyOfDirection = 1;
        result.AlertingFactor = 1;
        result.SensedDirection = (player.transform.position - transform.position).normalized;
        result.SensedDistance = Vector3.Distance(player.transform.position, transform.position);

        return result;
    }
Esempio n. 3
0
    public override Brain.SensedInfo Sense()
    {
        Brain.SensedInfo result = new Brain.SensedInfo();

        int addedCount = 0;

        for (int i = 0; i < lastIndex; i++)
        {
            if (heardInterests[i] == null)
            {
                heardInterests[i] = heardInterests[--lastIndex];
            }
            if (i < lastIndex && heardInterests[i] != null)
            {
                //float[] data = new float[1];
                //heardInterests[i].clip.GetData(data, heardInterests[i].timeSamples);
                //float level = data[0];
                float ratio = Mathf.Max(0, distance - (heardInterests[i].transform.position - transform.position).magnitude) / distance;
                float intensity = ratio * ratio;
                float sqrtRatio = Mathf.Sqrt(ratio);

                Debug.Log("Listening");
                result.CertaintyIsPlayer += ((heardInterests[i].tag == "PlayerMadeSound") ? 1 : 0) * sqrtRatio;
                result.CertaintyOfDirection += sqrtRatio;
                result.CertaintyOfDistance += sqrtRatio;
                result.AlertingFactor += Mathf.Pow( ratio, 0.1f );
                result.SensedDirection += (heardInterests[i].transform.position - transform.position).normalized;
                result.SensedDistance += (heardInterests[i].transform.position - transform.position).magnitude;
                addedCount++;
            }
        }

        if (lastIndex > 0)
        {
            result.CertaintyIsPlayer /= addedCount;
            result.CertaintyOfDirection /= addedCount;
            result.CertaintyOfDistance /= addedCount;
            result.AlertingFactor /= addedCount;
            result.SensedDirection /= addedCount;
            result.SensedDistance /= addedCount;
            result.SensedDirection.Normalize();
        }

        return result;
    }
Esempio n. 4
0
    public override Brain.SensedInfo Sense()
    {
        Brain.SensedInfo result = new Brain.SensedInfo();

        LightDetector light = FindObjectOfType<LightDetector>();

        if (Vector3.Angle(light.transform.forward, transform.position - light.transform.position) < angle)
        {
            result.CertaintyIsPlayer = 1;
            result.CertaintyOfDistance = 1;
            result.CertaintyOfDirection = 1;
            result.AlertingFactor = 1;
            result.SensedDirection = (light.transform.position - transform.position).normalized;
            result.SensedDistance = (light.transform.position - transform.position).magnitude;
        }

        return result;
    }
Esempio n. 5
0
    public override Brain.SensedInfo Sense()
    {
        Brain.SensedInfo result = new Brain.SensedInfo();

        LightDetector light = FindObjectOfType<LightDetector>();
        Color seenPixel;
        if (light.CanSee(gameObject, out seenPixel))
        {
            float brightness = Mathf.Min( (seenPixel.r + seenPixel.g + seenPixel.b) / 2, 1 );
            result.CertaintyIsPlayer = brightness;
            result.CertaintyOfDistance = brightness;
            result.CertaintyOfDirection = brightness;
            result.AlertingFactor = Mathf.Min( 1, brightness*10 );
            result.SensedDirection = (light.transform.position - transform.position).normalized;
            result.SensedDistance = (light.transform.position - transform.position).magnitude;
        }

        return result;
    }
Esempio n. 6
0
    public override Brain.SensedInfo Sense()
    {
        Brain.SensedInfo result = new Brain.SensedInfo();

        Debug.Log("Touching: " + isTouching);
        if( isTouching )
        {
            GameObject player = GameObject.Find("Player");

            result.CertaintyIsPlayer = 1;
            result.CertaintyOfDistance = 1;
            result.CertaintyOfDirection = 1;
            result.AlertingFactor = 1;
            result.SensedDirection = (player.transform.position - transform.position).normalized;
            result.SensedDistance = Vector3.Distance(player.transform.position, transform.position);
        }

        //isTouching = false;

        return result;
    }
Esempio n. 7
0
    public override Brain.SensedInfo Sense()
    {
        Brain.SensedInfo result = new Brain.SensedInfo();

        HeadLamp lamp = FindObjectOfType<HeadLamp>();
        float dist = Vector3.Distance(lamp.transform.position, transform.position);
        bool isInLamp = lamp.GetComponent<Light>().enabled && dist < lamp.GetComponent<Light>().range && Mathf.Acos(Vector3.Dot((transform.position - lamp.transform.position).normalized, lamp.transform.forward)) < Mathf.Deg2Rad * lamp.GetComponent<Light>().spotAngle/2 &&
            !Physics.Raycast( lamp.transform.position, (transform.position - lamp.transform.position).normalized, dist, 1 << LayerMask.NameToLayer("Map") );

        if (isInLamp)
        {
            result.CertaintyIsPlayer = 1;
            result.CertaintyOfDistance = 1;
            result.CertaintyOfDirection = 1;
            result.AlertingFactor = 1;
            result.SensedDirection = (lamp.transform.position - transform.position).normalized;
            result.SensedDistance = dist;
        }

        return result;
    }
Esempio n. 8
0
    public override Brain.SensedInfo Sense()
    {
        Brain.SensedInfo si=new Brain.SensedInfo();

        GameObject player = GameObject.Find("Player");

        RaycastHit hit;

        if (Vector3.Distance(player.transform.position, transform.position) <= distance && !Physics.Raycast(transform.position+transform.up, (player.transform.position - transform.position).normalized, out hit, Vector3.Distance(transform.position, player.transform.position), 1 << LayerMask.NameToLayer("Map")))
        {
            si.AlertingFactor = 1.0f;
            si.CertaintyIsPlayer = 1.0f;
            si.CertaintyOfDirection = 1.0f;
            si.CertaintyOfDistance = 1.0f;
            si.SensedDirection = (player.transform.position - transform.position).normalized;
            si.SensedDistance = Vector3.Distance(player.transform.position, transform.position);
        }
        else
        {
            si.AlertingFactor = 0.0f;
        }

        return si;
    }