Как только ваш объект окажется в пределах
distanceground + 0.1f
Затем
if (!Physics.Raycast(transform.position, -Vector3.up, distanceground + 0.1f))
Вернет false
каждый FixedUpdate()
и отложитна ваш else
блок, поэтому проблема не в Raycast
.
Проблема , скорее всего , заключается в том, что вы проверяете GetCurrentAnimatorStateInfo(0)
в FixedUpdate()
.При более низких частотах кадров FixedUpdate()
может вызываться несколько раз для каждого Update()
, в результате чего
if (dropped && !GetComponent<Animator>().GetCurrentAnimatorStateInfo(0).IsTag("topup"))
оценивает true
, поскольку состояние визуальной анимации, возможно, не успелопока что обновлю.
Я бы порекомендовал перенести все это в Update()
.