@Zimaell

Как округлить transform.position?

У меня идет перемещение объекта к заданным координатам, как только он до них дошел то срабатывает действие
Vector3 TPos;
void BlockSwap(){
  if(TPos != obj.transform.position){
    Debug.Log(TPos.x +" != " + obj.transform.position.x);
    MooveColor.transform.position = Vector3.MoveTowards(obj.transform.position, new Vector3(TPos.x, TPos.y, 0), 5f * Time.deltaTime);
    }else{
      Action ="";
      obj.transform.position = this.transform.position;
      }
  }

но условие не срабатывает так так числа не совсем совпадают, вот например
-0,4800001 != -0,4799805

то есть по сути нужно либо округлить y и x, либо это делать по другому, подскажите как правильно сделать?
  • Вопрос задан
  • 39 просмотров
Решения вопроса 2
GavriKos
@GavriKos Куратор тега Unity
Сравнивать флоты как принято сравнивать флоты - с определенным допуском.
Прям в юнити есть для этого метод Approximatly. Но он может оказаться сильно точным - так что просто сравните модуль разницы с неким эпсилоном
Ответ написан
ShockWave2048
@ShockWave2048
imposter
Сравнить можно по расстоянию между точками.
float dist = Mathf.Abs(Vector3.Distance(obj.transform.position, this.transform.position));
if (dist < 0.2f) CatchAction();
// Или так:
float dist = Mathf.Abs((obj.transform.position - this.transform.position).magnitude);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
28 янв. 2021, в 04:36
5000 руб./в час
28 янв. 2021, в 03:43
2000 руб./за проект
28 янв. 2021, в 02:42
120000 руб./в час