Exemplo n.º 1
0
    // Update is called once per frame
    new void FixedUpdate()
    {
        base.FixedUpdate();

        if (Hp < MaxHp * 0.2f)
        {
            state = BoarState.Flee;
        }

        if (state == BoarState.Flee && Hp > MaxHp * 0.7f)
        {
            state = BoarState.Normal;
        }

        if (foodTarget)
        {
            // food is too far to see
            if ((foodTarget.position - transform.position).magnitude > visionRadius)
            {
                foodTarget = null;
            }
        }

        if (!foodTarget)
        {
            boarTarget = null;
        }

        if (boarTarget)
        {
            if (state == BoarState.Normal)
            {
                // other boar runs away
                if ((boarTarget.position - foodTarget.position).magnitude > (visionRadius - 1.0f))
                {
                    boarTarget = null;
                }
            }
            else if (state == BoarState.Flee)
            {
                // TODO: multiple boar flee
                if ((boarTarget.position - transform.position).magnitude > (visionRadius + 1.0f))
                {
                    boarTarget = null;
                }
            }
        }

        if (state == BoarState.Normal && boarTarget && waitAttack == false)
        {
            if ((boarTarget.position - transform.position).magnitude < 1.5f)
            {
                Attack(boarTarget.GetComponent <Character>());
                waitAttack = true;

                StartCoroutine(attackCooldown());
            }
        }
    }
Exemplo n.º 2
0
    // Use this for initialization
    new void Start()
    {
        base.Start();

        // default speed
        //rb2D.velocity = new Vector2(Random.Range(-1f, 1f), Random.Range(-1f, 1f)).normalized * speed;

        state = BoarState.Normal;
        StartCoroutine(Wander());

        animator = GetComponent <Animator>();
        animator.SetBool("Move", true);

        visionRadius = transform.Find("Vision").GetComponent <CircleCollider2D>().radius;
    }