// Update is called once per frame void Update() { //Остановка активности если игрок мертв - с переходом в айдл на месте if (target == null || target.GetComponent <DamageHandler>().isDead) { movementVector = Vector2.zero; isAttacking = attackAction.isAttacking; graphicsController.UpdateGraphics(movementVector, isAttacking); rigidbodyMover.SetMovementVector(movementVector); return; } //3 круга float distanceToTarget = (target.transform.position - transform.position).magnitude; if (distanceToTarget > bigRadius) { if (!string.Equals(curRadiusName, "big")) { curRadiusName = "big"; curRadius = bigRadius; GenerateMovementPoint(); } } else { if (distanceToTarget > mediumRadius) { if (!string.Equals(curRadiusName, "medium")) { curRadiusName = "medium"; curRadius = mediumRadius; GenerateMovementPoint(); } } else { if (distanceToTarget > smallRadius) { if (!string.Equals(curRadiusName, "small")) { curRadiusName = "small"; curRadius = smallRadius; GenerateMovementPoint(); } } else { if (!string.Equals(curRadiusName, "close")) { curRadiusName = "close"; curRadius = 0f; GenerateMovementPoint(); } } } } movementVector = (((Vector2)target.transform.position + movementPoint) - (Vector2)transform.position).normalized; isAttacking = attackAction.isAttacking; //Тернарный оператор вместо кода снизу rigidbodyMover.SetMovementVector((isAttacking) ? Vector2.zero : movementVector); //if (isAttacking) //{ // rigidbodyMover.SetMovementVector(new Vector2(0f,0f)); //} //else //{ // rigidbodyMover.SetMovementVector(movementVector); //} //Дабл чек isAttacking - чтобы не кидать лишние вызовы, на стороне приема - чтобы избежать ошибок (хотя если проявятся не лучше ли сразу узнать?) if (!isAttacking && distanceToTarget < attackRange) { attackAction.IsInRange(movementVector); } //когда лучше обновлять графику? graphicsController.UpdateGraphics(movementVector, isAttacking); }