示例#1
0
    /// <summary>
    /// Causes the squad to move to hack the context indicator target.
    /// One squad member is randomly chosen to hack while the others occupy cover points
    /// near the target.
    /// </summary>
    /// <param name="_context"></param>
    void SquadHackCommand(CurrentContext _context)
    {
        HackableConsole console = _context.indicator_hit.GetComponent <HackableConsole>();

        if (console.hacked)
        {
            return;
        }

        order_target_bobber.SetTarget(console.transform);

        squad_sense.hacker_squaddie = squad_sense.squaddies[Random.Range(0, num_squaddies)];
        for (int i = 0; i < num_squaddies; ++i)
        {
            SquaddieAI squaddie = squad_sense.squaddies[i];
            squaddie.knowledge.order_console = console;

            if (squaddie == squad_sense.hacker_squaddie)
            {
                // Hacker squaddie moves to hack.
                squaddie.knowledge.current_order = OrderType.HACK;
                squaddie.nav.destination         = console.hack_point.position;
            }
            else
            {
                // The other squaddies move to defend.
                Vector3 pos = JHelper.PosToCirclePos(console.hack_point.position, num_squaddies, i, 5);

                squaddie.knowledge.current_order = OrderType.GUARD;
                squaddie.MoveToCoverNearPosition(pos);
            }
        }
    }
示例#2
0
    void UpdateHackPosition(SquaddieAI _squaddie)
    {
        if (_squaddie.knowledge.current_order == OrderType.HACK)
        {
            HackableConsole console = _squaddie.knowledge.order_console;
            float           dist    = Vector3.Distance(_squaddie.transform.position,
                                                       console.transform.position);

            if (dist > _squaddie.nav.stoppingDistance)
            {
                _squaddie.nav.destination = console.hack_point.position;
                _squaddie.nav.isStopped   = false;
            }
        }
    }