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); }
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; } }