ШАРИК Опубликовано 12 апреля, 2017 Поделиться Опубликовано 12 апреля, 2017 Здравствуйте.Как можно сделать плавное перемещение объекта за курсором в окне? То есть двигать по чуть-чуть . по единице. Скрытый текст Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 12 апреля, 2017 Поделиться Опубликовано 12 апреля, 2017 1 час назад, ШАРИК сказал: Как можно сделать плавное перемещение объекта за курсором в окне? На плавность влияет расчет дельты между кадрами рисования. Позиция круга = (Позиция круга, Позиция курсора, Time.dtltaTime * speed) gameObject.position = MoveTowards(gameObject.position, mouse.Position, Time.dtltaTime * speed) Скрытый текст public static Vector2 MoveTowards(Vector2 current, Vector2 target, float maxDistanceDelta) { Vector2 a = target - current; float magnitude = a.magnitude; Vector2 result; if (magnitude <= maxDistanceDelta || magnitude == 0f) { result = target; } else { result = current + a / magnitude * maxDistanceDelta; } return result; } public float magnitude { get { return Mathf.Sqrt(this.x * this.x + this.y * this.y); } } Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 12 апреля, 2017 Автор Поделиться Опубликовано 12 апреля, 2017 (изменено) 34 минуты назад, MasterGH сказал: На плавность влияет расчет дельты между кадрами рисования. Позиция круга = (Позиция круга, Позиция курсора, Time.dtltaTime * speed) gameObject.position = MoveTowards(gameObject.position, mouse.Position, Time.dtltaTime * speed) Скрыть содержимое public static Vector2 MoveTowards(Vector2 current, Vector2 target, float maxDistanceDelta) { Vector2 a = target - current; float magnitude = a.magnitude; Vector2 result; if (magnitude <= maxDistanceDelta || magnitude == 0f) { result = target; } else { result = current + a / magnitude * maxDistanceDelta; } return result; } public float magnitude { get { return Mathf.Sqrt(this.x * this.x + this.y * this.y); } } Спасибо )Пришлось чуточку переписать . Но почему-то объект просто телепортируется , хотя я sleep для теста поставил Так вот переделал: Скрытый текст float magnitudee(int x, int y) { return sqrt(x * x + y * y); } int MoveTowards(int current, int target, float maxDistanceDelta) { int a = target - current; int magnitude = magnitudee(current, target); int result; if (magnitude <= maxDistanceDelta || magnitude == 0) { result = target; } else { result = current + a / magnitude * maxDistanceDelta; } return result; } Так вызываю: Скрытый текст x = MoveTowards(foo.x - (size / 2), x,1); y = MoveTowards(foo.y - (size / 2), y ,1); Изменено 12 апреля, 2017 пользователем ШАРИК Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 14 апреля, 2017 Автор Поделиться Опубликовано 14 апреля, 2017 Шо , никто не шарит ? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 14 апреля, 2017 Поделиться Опубликовано 14 апреля, 2017 17 минуту назад, ШАРИК сказал: Шо , никто не шарит ? Давай переформулируем вопрос. Кто хочет принять участие в решении вопроса? Кто хочет узнать как плавно перемещать объекты за курсом мышки? Кто хотел бы увидеть решение? Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 14 апреля, 2017 Автор Поделиться Опубликовано 14 апреля, 2017 (изменено) 1 час назад, MasterGH сказал: Давай переформулируем вопрос. Кто хочет принять участие в решении вопроса? Кто хочет узнать как плавно перемещать объекты за курсом мышки? Кто хотел бы увидеть решение? да тут хоть обпереформулируйся !11 Изменено 14 апреля, 2017 пользователем ШАРИК Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения