Движение объекта - Форум Игроделов
Пт, 17 Май 2024, 09:19 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » СКРИПТИНГ » Движение объекта
Движение объекта
ZillsДата: Вт, 12 Авг 2014, 17:49 | Сообщение # 1
Нет аватара
 
Сообщений: 17
Награды: 0
Репутация: 0
Статус: Offline
Вот скрипт:

Код
using UnityEngine;
using System.Collections;

public class TransformLocalCoordenat : MonoBehaviour {

  public float x = 0;
  public float y = 0;
  public float z = 0;

  public GameObject cube;

  public float Distans = 5;

  void Update () {
   GameObject go = GameObject.FindGameObjectWithTag("Player");

   if(go == null) return;
    
   if(Vector3.Distance(transform.position, go.transform.position) > Distans)

    cube.transform.position = new Vector3(x + 5, y + 5, z + 5) * Time.deltaTime;
  }
}


Но объект, почему-то не хочет двигаться плавно, а резко переходит в координаты, которые должен принять постепенно. Почему так?
 
СообщениеВот скрипт:

Код
using UnityEngine;
using System.Collections;

public class TransformLocalCoordenat : MonoBehaviour {

  public float x = 0;
  public float y = 0;
  public float z = 0;

  public GameObject cube;

  public float Distans = 5;

  void Update () {
   GameObject go = GameObject.FindGameObjectWithTag("Player");

   if(go == null) return;
    
   if(Vector3.Distance(transform.position, go.transform.position) > Distans)

    cube.transform.position = new Vector3(x + 5, y + 5, z + 5) * Time.deltaTime;
  }
}


Но объект, почему-то не хочет двигаться плавно, а резко переходит в координаты, которые должен принять постепенно. Почему так?

Автор - Zills
Дата добавления - 12 Авг 2014 в 17:49
AltairДата: Вт, 12 Авг 2014, 18:51 | Сообщение # 2
Unity 3D PRO Developer
 
Сообщений: 758
Награды: 6
Репутация: 195
Статус: Offline
Zills, потому что нужно не просто умножать на дельта тайм..
Код
cube.transform.position = Vector3.Lerp( cube.transform.position,Vector3(x + 5, y + 5, z + 5),Tim.deltaTime*4);
 
СообщениеZills, потому что нужно не просто умножать на дельта тайм..
Код
cube.transform.position = Vector3.Lerp( cube.transform.position,Vector3(x + 5, y + 5, z + 5),Tim.deltaTime*4);

Автор - Altair
Дата добавления - 12 Авг 2014 в 18:51
ZillsДата: Вт, 12 Авг 2014, 20:52 | Сообщение # 3
Нет аватара
 
Сообщений: 17
Награды: 0
Репутация: 0
Статус: Offline
Цитата Altair ()
потому что нужно не просто умножать на дельта тайм..


И еще вопрос. Почему это работает все в Update, а в FixUpdate нет? Это же, вроде, относится к физике
 
Сообщение
Цитата Altair ()
потому что нужно не просто умножать на дельта тайм..


И еще вопрос. Почему это работает все в Update, а в FixUpdate нет? Это же, вроде, относится к физике

Автор - Zills
Дата добавления - 12 Авг 2014 в 20:52
AltairДата: Вт, 12 Авг 2014, 22:00 | Сообщение # 4
Unity 3D PRO Developer
 
Сообщений: 758
Награды: 6
Репутация: 195
Статус: Offline
Для начала не FixUpdate ,а FixedUpdate..
Гугл...<--если что,то это ссылка для тебя.
 
СообщениеДля начала не FixUpdate ,а FixedUpdate..
Гугл...<--если что,то это ссылка для тебя.

Автор - Altair
Дата добавления - 12 Авг 2014 в 22:00
Форум Игроделов » UNITY3D » СКРИПТИНГ » Движение объекта
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024