コード例 #1
0
    void Update()
    {
        custom = new TagSensor(gameObject, min, max, fov, direction);

        switch (Mode)
        {
        case mode.Line:
            custom.DrawLines();
            break;

        case mode.Grid:
            custom.GridLines();
            break;

        case mode.Sweep:
            custom.SweepLines(SweepingRate);
            break;

        case mode.SweepLine:
            custom.SweepLines(SweepingRate / 2);
            custom.DrawLines();
            break;

        default:
            break;
        }

        detected = custom.OnDetect("tag1");
        //Debug.Log(detected);
    }
コード例 #2
0
 void Update()
 {
     //without structs
     sensorA.MaxRange = maxRange;
     sensorA.MinRange = minRange;
     sensorA.FOV      = FOV;
     sensorA.OffsetY  = lookAtAngle;
     Detected         = sensorA.OnDetect(tagName);
     sensorA.GridLines();
 }
    void Update()
    {
        //without structs
        sensorA.MaxRange = maxRange;
        sensorA.MinRange = minRange;
        sensorA.FOV      = FOV;
        sensorA.OffsetY  = lookAtAngle;
        Detected         = sensorA.OnDetect(tagName);
        sensorA.GridLines();

        //with structs
        for (int i = 0; i < TagSensorStructs.Length; i++)
        {
            TagSensorStructs[i].Sensor.Disabled = TagSensorStructs[i].Disabled;
            TagSensorStructs[i].Sensor.MaxRange = TagSensorStructs[i].maxRange;
            TagSensorStructs[i].Sensor.MinRange = TagSensorStructs[i].minRange;
            TagSensorStructs[i].Sensor.FOV      = TagSensorStructs[i].FOV;
            TagSensorStructs[i].Sensor.OffsetY  = TagSensorStructs[i].lookAtAngle;
            TagSensorStructs[i].Detected        = TagSensorStructs[i].Sensor.OnDetect(TagSensorStructs[i].tagName); //broken
            TagSensorStructs[i].Sensor.GridLines();
            //Debug.Log(TagSensorStructs[i].sensor.OnDetect(tagName));
        }
    }
コード例 #4
0
    void Update()
    {
        float step = speed * Time.deltaTime;
        float dist = Vector3.Distance(Player.transform.position, transform.position);

        sensor.MaxRange = maxRange;
        sensor.MinRange = minRange;
        sensor.FOV      = FOV;
        sensor.OffsetY  = lookAtAngle;
        Detected        = sensor.OnDetect("player");

        switch (ActiveState)
        {
        case State.Patrol:
            if (ActiveWaypoint == Waypoint.Left)
            {
                transform.LookAt(A.transform.position);
                transform.position = Vector3.MoveTowards(transform.position, A.transform.position, step);
            }
            else if (ActiveWaypoint == Waypoint.Right)
            {
                transform.LookAt(B.transform.position);
                transform.position = Vector3.MoveTowards(transform.position, B.transform.position, step);
            }

            if (transform.position == A.transform.position)
            {
                ActiveWaypoint = Waypoint.Right;
            }
            else if (transform.position == B.transform.position)
            {
                ActiveWaypoint = Waypoint.Left;
            }
            break;

        case State.Chase:
            transform.LookAt(Player.transform.position);
            transform.position = Vector3.MoveTowards(transform.position, Player.transform.position, step);
            break;

        case State.Stop:
            break;

        default:
            break;
        }

        if (Player.transform.position.z >= goal.transform.position.z)
        {
            ActiveState = State.Stop;
        }
        else
        {
            if (Detected)
            {
                ActiveState = State.Chase;
            }
            else
            {
                ActiveState = State.Patrol;
            }
        }

        sensor.GridLines();

        //if
        if (transform.position == Player.transform.position)
        {
            Player.transform.position = new Vector3(0, 0, -145);
            transform.position        = new Vector3(0, 0, -130);
            ActiveState = State.Patrol;
        }
    }
コード例 #5
0
    void Update()
    {
        float step = speed * Time.deltaTime;
        float dist = Vector3.Distance(Player.transform.position, transform.position);

        estimate = sensor.DotToAngle(transform.forward, Vector3.Normalize(Player.transform.position - transform.position)) * 2;

        switch (ActiveState) //
        {
        case State.Patrol:
            if (ActiveWaypoint == Waypoint.Left)
            {
                transform.LookAt(A.transform.position);
                transform.position = Vector3.MoveTowards(transform.position, A.transform.position, step);
            }
            else if (ActiveWaypoint == Waypoint.Right)
            {
                transform.LookAt(B.transform.position);
                transform.position = Vector3.MoveTowards(transform.position, B.transform.position, step);
            }

            if (transform.position == A.transform.position)
            {
                ActiveWaypoint = Waypoint.Right;
            }
            else if (transform.position == B.transform.position)
            {
                ActiveWaypoint = Waypoint.Left;
            }
            break;

        case State.Chase:
            transform.LookAt(Player.transform.position);
            transform.position = Vector3.MoveTowards(transform.position, Player.transform.position, step);
            break;

        case State.Stop:
            break;

        default:
            break;
        }

        if (Player.transform.position.z >= goal.transform.position.z)
        {
            ActiveState = State.Stop;
        }
        else
        {
            /* the way thats actually working
             * if (dist <= range & angle > estimate)
             * {
             *  ActiveState = State.Chase;
             * }
             * else if (dist > range)
             * {
             *  ActiveState = State.Patrol;
             * }*/

            //the way I want to do it

            if (sensor.OnDetect("player"))
            {
                ActiveState = State.Chase;
            }
            else if (dist > range)
            {
                ActiveState = State.Patrol;
            }
        }

        sensor.GridLines();

        if (transform.position == Player.transform.position)
        {
            Player.transform.position = new Vector3(0, 0, -145);
            transform.position        = new Vector3(0, 0, -130);
            ActiveState = State.Patrol;
        }
    }