public override void getTarget()
    {
        Checker.Border border = keepChecker.playerUpBorder;
        moveTarget = new Vector2(UnityEngine.Random.Range(border.Left, border.Right), border.Up);
        //keepTime - время за которое бот тянет  ̶л̶я̶м̶к̶у̶  шайбу на позицию
        float keepTime = (((Vector2)keepObj.position - moveTarget).magnitude / (Time.fixedDeltaTime * speedAI)) * Time.fixedDeltaTime * 1.2f;
        // 0.14f - примерно за столько времени у AI всегда летит шайба, если будет изменяться скорость - необходимо будет исправить (да, это пока что такой костыль)
        float posX = gate.calculatePos(timeAim + keepTime + 0.14f);

        leftBorder  = posX - dispersion;
        rightBorder = posX + dispersion;
        aimTarget   = new Vector2(UnityEngine.Random.Range(border.Left <leftBorder?leftBorder : border.Left, border.Right> rightBorder ? rightBorder : border.Right), border.Up);
        aimTarget   = game.GetComponent <Field>().correctionForAI(aimTarget);
    }
示例#2
0
 private void Start()
 {
     checker = gameObject.GetComponent <Checker>();
     if (gameObject.transform.position.y > 0)
     {
         field     = checker.playerUpBorder;
         field.Up -= Math.Abs(field.Up - field.Down) / 2;
     }
     else
     {
         field                 = checker.playerDownBorder;
         field.Down           += Math.Abs(field.Up - field.Down) / 2;
         checker.playableForAI = false;
     }
 }