public void OnRobotNearby(Robot robot, IrDirection drn, bool isReceiving, bool force)
 {
     if (drn == IrDirection.Forward)
     {
         SetColour(robot.GetHeadColour());
     }
 }
Exemple #2
0
 private void OnNearbyRobot(Robot robot, IrDirection drn, bool isReceiving, bool force)
 {
     foreach (var listener in _listeners)
     {
         listener.OnRobotNearby(robot, drn, isReceiving, force);
     }
 }
    public void OnRobotNearby(Robot robot, IrDirection drn, bool isReceiving, bool force)
    {
//        if (drn == IrDirection.Forward)
//        {
        //            shouldWait = true;

        //            if (_tempTargetCoroutine == null)
        //            {
        //                _tempTargetCoroutine = StartCoroutine(SetTemporaryTarget());
        //            }
        if (_brakingCoroutine == null)
        {
            StartCoroutine(ApplyBrakes());
        }
//        }
    }
Exemple #4
0
    private void EmitDirectionalIR(Vector3 direction, IrDirection sensorDirection)
    {
        Vector3 originPosition = transform.position;

        switch (sensorDirection)
        {
        case IrDirection.Forward:
            originPosition = IR_Front.transform.position;
            break;

        case IrDirection.Backward:
            originPosition = IR_Back.transform.position;
            break;

        case IrDirection.Left:
            originPosition = IR_Left.transform.position;
            break;

        case IrDirection.Right:
            originPosition = IR_Right.transform.position;
            break;
        }

        Ray ray = new Ray(originPosition + new Vector3(0, 0.5f, 0), direction);

        Debug.DrawRay(ray.origin, _irRange * ray.direction, Color.red, 0.01f);
        if (Physics.Raycast(ray, out RaycastHit hit, _irRange, _layerMask))
        {
            var robot = hit.collider.gameObject.GetComponentInParent <Robot>();
            if (robot == null)
            {
                robot = hit.collider.transform.parent.GetComponentInParent <Robot>();
            }

            if (robot == null)
            {
                return;
            }

            if (robot.IsReceivingIR)
            {
//                Debug.LogFormat("{0}: Hello {1} ({2})", Name, robot.Name, sensorDirection);
                OnNearbyRobot?.Invoke(robot, sensorDirection, true, false);
            }
            OnNearbyRobot?.Invoke(robot, sensorDirection, robot.IsReceivingIR, true);
        }
    }
    public void OnRobotNearby(Robot robot, IrDirection drn, bool isReceiving, bool force)
    {
        if (drn == IrDirection.Forward)
        {
            var distance = Vector3.Distance(transform.position, robot.transform.position);

            if (distance < 1)
            {
                CancelMovement(true);
            }

//            if (_tempTargetCoroutine == null)
//            {
//                _tempTargetCoroutine = StartCoroutine(SetTemporaryTarget());
//            }

//            if (_brakingCoroutine == null)
//            {
//                StartCoroutine(ApplyBrakes());
//            }
        }
    }