Exemple #1
0
    public BotBase GetBallOwner()
    {
        GenericFootballer footballer = Main.LevelController.nullableCurrentFootballerWithBall();

        if (footballer != null)
        {
            return(footballer.GetComponent <BotBase>());
        }
        return(null);
    }
Exemple #2
0
    public void PickupLooseBall(LooseBall looseball, GenericFootballer tar)
    {
        m_looseBalls.Remove(looseball);
        this.catch_particle_at(looseball.transform.position);
        if (this.get_footballer_team(tar) == Team.PlayerTeam)
        {
            m_playerTeamFootballersWithBall.Add(tar);
            tar._current_mode = GenericFootballer.GenericFootballerMode.Idle;
            tar.set_wait_delay(15);
        }
        else
        {
            this.m_enemyTeamFootballersWithBall.Add(tar);
            tar._current_mode = GenericFootballer.GenericFootballerMode.Idle;
            tar.set_wait_delay(15);
        }

        // ai msg
        {
            BotBase new_ball_owner = tar.GetComponent <BotBase>();
            if (_prev_ball_owner != null)
            {
                _prev_ball_owner.Msg_LostBall();
            }
            new_ball_owner.Msg_GotBall();
            _prev_ball_owner = new_ball_owner;
        }

        if (__commentary_last_team_to_own_ball == Team.PlayerTeam)
        {
            if (__commentary_last_team_to_own_ball == this.get_footballer_team(tar))
            {
                m_commentaryManager.notify_event(CommentaryEvent.PassComplete);
            }
            else if (__commentary_last_team_to_own_ball != this.get_footballer_team(tar) && new Vector3(looseball._vel.x, looseball._vel.y, looseball._vz).magnitude > 1)
            {
                m_commentaryManager.notify_event(CommentaryEvent.Interception, true);
            }
        }

        Destroy(looseball.gameObject);
    }
Exemple #3
0
    private void check_bump_with_target(GenericFootballer tar)
    {
        if (this.collider_contains(tar.GetComponent <CircleCollider2D>()) && this.get_calculated_velocity().magnitude > 0)
        {
            Vector2 calc_vel_dir = this.get_calculated_velocity().normalized;
            float   mag          = Mathf.Max(this.get_calculated_velocity().magnitude, tar.get_calculated_velocity().magnitude);
            Vector2 bump_vel     = calc_vel_dir * mag;

            Vector3 hit_spot = new Vector3(
                (transform.position.x + tar.transform.position.x) / 2,
                (transform.position.y + tar.transform.position.y) / 2,
                (transform.position.z + tar.transform.position.z) / 2
                );
            if (Main.LevelController.get_footballer_team(this) == Team.PlayerTeam)
            {
                Main.LevelController.m_commentaryManager.notify_event(CommentaryEvent.Block);
            }
            this.apply_bump(Util.vec_scale(bump_vel, -1), hit_spot, true);
            tar.apply_bump(bump_vel, hit_spot);
        }
    }
Exemple #4
0
    private void check_bump_with_target(GenericFootballer tar)
    {
        if (this.collider_contains(tar.GetComponent<CircleCollider2D>()) && this.get_calculated_velocity().magnitude > 0) {
            Vector2 calc_vel_dir = this.get_calculated_velocity().normalized;
            float mag = Mathf.Max(this.get_calculated_velocity().magnitude,tar.get_calculated_velocity().magnitude);
            Vector2 bump_vel = calc_vel_dir * mag;

            Vector3 hit_spot = new Vector3(
                (transform.position.x + tar.transform.position.x)/2,
                (transform.position.y + tar.transform.position.y)/2,
                (transform.position.z + tar.transform.position.z)/2
            );
            if (Main.LevelController.get_footballer_team(this) == Team.PlayerTeam) {
                Main.LevelController.m_commentaryManager.notify_event(CommentaryEvent.Block);
            }
            this.apply_bump(Util.vec_scale(bump_vel,-1),hit_spot,true);
            tar.apply_bump(bump_vel,hit_spot);
        }
    }