Вопрос-[ответ] по Unity
|
|
QWER56 | Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Вопрос-[Ответ] по Unity3d
База скриптов Unity3d Курс Уроков по Unity 3D от Alcatraz
ConsMark - поисковик по интернет магазинам.
Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54 |
|
| |
pixeye | Дата: Вторник, 16 Июня 2015, 20:45 | Сообщение # 7021 |
Red Winter Software
Сейчас нет на сайте
| Цитата JaJaBinks ( ) ЧТо значит проверка на тег?
У тебя в первом скрипте идет проверка объекта по тэгу во время коллизии. Код оч стандартный и так с ходу понять почему на андроидах это не работает мне сложно. Поэтому будет здорово по отдельности каждый элемент проверить. Наверняка не срабатывает на этапе проверки.
ACTORS - мой фреймворк на Unity Until We Die - игра над которой работаю
|
|
| |
Gupi | Дата: Среда, 17 Июня 2015, 19:28 | Сообщение # 7022 |
был не раз
Сейчас нет на сайте
| Здравствуйте. Вопрос, наверное, задавался не раз, в поиске находил парочку тем по моему вопросу, но следуя инструкциям, так и не смог добиться желаемого результата... Есть 2 координаты, "а" и "б": мне нужно, чтобы куб по команде передвинулся из точки "а" в точку "б", повернувшись "лицом" в сторону передвижения. Необходимо, чтобы движение было медленным. Как реализовать сею функцию? Пробовал следующее: Код Vector3 startm = new Vector3(px - 0.5f, 0.5f, py - 0.5f); Vector3 finm = new Vector3(cx - 0.5f, 0.5f, cy - 0.5f); Player.transform.position = Vector3.MoveTowards (startm, finm, Time.deltaTime); При использовании сего куска кода куб сдвигается на чуть-чуть по нужной траектории и остаётся на месте. Если домножить Time.deltaTime на 100, то на практике куб мгновенно перемещается в конечную точку по команде. С поворотом пока не разбирался. Заранее благодарен за помощь.
|
|
| |
beril | Дата: Среда, 17 Июня 2015, 19:45 | Сообщение # 7023 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| Цитата Gupi ( ) Time.deltaTime на 100, Умножай не на 100, а на меньшее число
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |
Gupi | Дата: Среда, 17 Июня 2015, 19:47 | Сообщение # 7024 |
был не раз
Сейчас нет на сайте
| Цитата beril ( ) Умножай не на 100, а на меньшее число Пробовал. Куб так же мгновенно перемещается, но не доходит до конечной точки...
|
|
| |
beril | Дата: Среда, 17 Июня 2015, 20:08 | Сообщение # 7025 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| Ну нужно найти вектор направления Vector3 vec = target.position - player.position; И по нему уже двигаться
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |
pixeye | Дата: Среда, 17 Июня 2015, 20:23 | Сообщение # 7026 |
Red Winter Software
Сейчас нет на сайте
| Цитата Gupi ( ) Здравствуйте. Вопрос, наверное, задавался не раз, в поиске находил парочку тем по моему вопросу, но следуя инструкциям, так и не смог добиться желаемого результата... Есть 2 координаты, "а" и "б": мне нужно, чтобы куб по команде передвинулся из точки "а" в точку "б", повернувшись "лицом" в сторону передвижения. Необходимо, чтобы движение было медленным. Как реализовать сею функцию? Пробовал следующее:
Скачиваешь и ставишь в проект это -> https://github.com/prime31/GoKit
Далее в коде:
Go.to(YOUROBJECT.transform, TIME, new GoTweenConfig().position(POS).setEaseType(GoEaseType.SineOut));
Где YOUROBJECT.transform - трансформ передвигаемого объекта, TIME время передвижения типа float, POS vector позиции на которую надо сместиться. Покопавшись на гитхабе разберешься как таким же способом сделать вращение в нужную точку.
Для любых строго заданных перемещений из точки А в точку Б рекомендую использовать систему твинов.
ACTORS - мой фреймворк на Unity Until We Die - игра над которой работаю
|
|
| |
Gupi | Дата: Среда, 17 Июня 2015, 20:57 | Сообщение # 7027 |
был не раз
Сейчас нет на сайте
| pixeye, а как установить плагин?
|
|
| |
pixeye | Дата: Среда, 17 Июня 2015, 23:27 | Сообщение # 7028 |
Red Winter Software
Сейчас нет на сайте
| Цитата Gupi ( ) pixeye, а как установить плагин?
В реадми все написано, просто скачать все файлы и распаковать их в ассетах проекта
Ассеты
ACTORS - мой фреймворк на Unity Until We Die - игра над которой работаю
Сообщение отредактировал pixeye - Среда, 17 Июня 2015, 23:38 |
|
| |
Gupi | Дата: Четверг, 18 Июня 2015, 09:30 | Сообщение # 7029 |
был не раз
Сейчас нет на сайте
| Цитата pixeye ( ) В реадми все написано, просто скачать все файлы и распаковать их в ассетах проекта При компиляции 113 ошибок в скриптах этого плагина.
|
|
| |
pixeye | Дата: Четверг, 18 Июня 2015, 10:18 | Сообщение # 7030 |
Red Winter Software
Сейчас нет на сайте
| Цитата Gupi ( ) При компиляции 113 ошибок в скриптах этого плагина.
Скорее всего у тебя юнити5, на него правится плагин
ACTORS - мой фреймворк на Unity Until We Die - игра над которой работаю
|
|
| |
Gupi | Дата: Четверг, 18 Июня 2015, 12:34 | Сообщение # 7031 |
был не раз
Сейчас нет на сайте
| Цитата pixeye ( ) Скорее всего у тебя юнити5, на него правится плагин Есть какие-нибудь ещё идеи, как решить поставленные задачи?
|
|
| |
pixeye | Дата: Четверг, 18 Июня 2015, 13:26 | Сообщение # 7032 |
Red Winter Software
Сейчас нет на сайте
| Цитата Gupi ( ) Есть какие-нибудь ещё идеи, как решить поставленные задачи?
Написать свои твины. Простейший из:
Код public IEnumerator moveByTime (Transform obTransform, Vector3 end, float time) {
Vector3 start = obTransform.localPosition; float t = 0.0f; while (t < 1.0f) { t += Time.deltaTime * (1.0f / time); obTransform.localPosition = Vector3.Lerp (start, end, t); yield return 0; } }
Дальше вызываешь его как Код StartCoroutine(moveByTime(transform, position, time)); где трансформ эт трансформ объекта, позиция эт вектор куда, а время это за сколько он доберется до точки.
Настоятельно рекомендую изначально покурить на тему твинов чтобы либо собрать свою библиотеку. Либо посмотреть в гугле - таких библиотек помимо праймовских для юнити туча.
ACTORS - мой фреймворк на Unity Until We Die - игра над которой работаю
Сообщение отредактировал pixeye - Четверг, 18 Июня 2015, 15:01 |
|
| |
Gupi | Дата: Четверг, 18 Июня 2015, 14:42 | Сообщение # 7033 |
был не раз
Сейчас нет на сайте
| pixeye, не понял как записывается первый аргумент. Что именно туда вписывается?
|
|
| |
pixeye | Дата: Четверг, 18 Июня 2015, 14:45 | Сообщение # 7034 |
Red Winter Software
Сейчас нет на сайте
| Цитата Gupi ( ) pixeye, не понял как записывается первый аргумент. Что именно туда вписывается?
transform объекта которого ты двигаешь.
ACTORS - мой фреймворк на Unity Until We Die - игра над которой работаю
|
|
| |
Gupi | Дата: Четверг, 18 Июня 2015, 14:50 | Сообщение # 7035 |
был не раз
Сейчас нет на сайте
| Цитата pixeye ( ) transform объекта которого ты двигаешь. Можно пример пожалуйста? Чего-то никак не догоняю...
|
|
| |
pixeye | Дата: Четверг, 18 Июня 2015, 15:00 | Сообщение # 7036 |
Red Winter Software
Сейчас нет на сайте
| Цитата Gupi ( ) Можно пример пожалуйста? Чего-то никак не догоняю...
Без обид, но если ты такие вещи недогоняешь то тебе курить мануалы и учебники по юнити еще долго.
Код void Start(){
Transform myTransform = transform; Vector3 moveToPos = new Vector3(100,100,100); float moveTime = 2.0f;
StartCoroutine(moveByTime(myTransform, moveToPos, moveTime)); }
Во время выполнения метода Старт запустится код, что скидывал выше. myTransform - переменная хранящая трансформ игрового объекта к которому привязан твой скрипт. Можно просто использовать transform - но это плохая практика так как за ней идет поиск трансформа. Лучше сохранять в переменной.
мувТуПос - переменная типа вектор, от балды поставил позицию в x 100, y 100, z 100 мувТайм - время за которое из точки А в точку Б пройдет твой объект - чем больше время тем медленнее двигается соответсвенно.
ACTORS - мой фреймворк на Unity Until We Die - игра над которой работаю
|
|
| |
Gupi | Дата: Четверг, 18 Июня 2015, 15:07 | Сообщение # 7037 |
был не раз
Сейчас нет на сайте
| pixeye, блин, а мне нужно передвинуть не тот объект, к которому привязан скрипт... Как бы я кликаю по клеточке и на неё должен переместится персонаж (кубик), т.е. скрипт я к клеточке привязываю.
Сообщение отредактировал Gupi - Четверг, 18 Июня 2015, 15:10 |
|
| |
pixeye | Дата: Четверг, 18 Июня 2015, 15:19 | Сообщение # 7038 |
Red Winter Software
Сейчас нет на сайте
| Цитата Gupi ( ) pixeye, блин, а мне нужно передвинуть не тот объект, к которому привязан скрипт... Как бы я кликаю по клеточке и на неё должен переместится персонаж (кубик), т.е. скрипт я к клеточке привязываю.
Вешаешь этот скрипт на пустой объект на сцене
переменную трансформа выносишь за метод
Код public Transform TargetTransorm = transform;
void Start(){
Vector3 moveToPos = new Vector3(100,100,100); float moveTime = 2.0f;
StartCoroutine(moveByTime(TargetTransorm, moveToPos, moveTime)); }
В инспекторе выставляешь любой трансформ. ( кликаешь по объекту который содержит этот скрипт и там появится выбор TargetTransorm
- однако это очень неуклюже и конечно в реальной практике где у тебя объекты будут динамически создаваться/убиваться такое ты использовать не сможешь. Но тут уже надо изучать что такое синглтон, работать с массивами, делать проверки - в общем, этим надо отдельно заниматься и расписывать.
Тут немного о простейших корутинах
ACTORS - мой фреймворк на Unity Until We Die - игра над которой работаю
Сообщение отредактировал pixeye - Четверг, 18 Июня 2015, 15:20 |
|
| |
Gupi | Дата: Четверг, 18 Июня 2015, 16:11 | Сообщение # 7039 |
был не раз
Сейчас нет на сайте
| Цитата pixeye ( ) public Transform TargetTransorm = transform; "Assets\Scripts\Square.cs(36,36): Error CS0120: Для нестатического поля, метода или свойства "UnityEngine.Component.transform.get" требуется ссылка на объект (CS0120) (Assembly-CSharp)"
Спасибо за статью, которую скинули... Полистал её и нашёл там про движение. Немного адаптировал код под свой скрипт и всё получилось как надо. Ещё раз огромное спасибо!
Сообщение отредактировал Gupi - Четверг, 18 Июня 2015, 16:47 |
|
| |
pixeye | Дата: Четверг, 18 Июня 2015, 17:08 | Сообщение # 7040 |
Red Winter Software
Сейчас нет на сайте
| Цитата Gupi ( ) "Assets\Scripts\Square.cs(36,36): Error CS0120: Для нестатического поля, метода или свойства "UnityEngine.Component.transform.get" требуется ссылка на объект (CS0120) (Assembly-CSharp)"
Ну уж совсем копипастить то что я пишу не надо : (
ACTORS - мой фреймворк на Unity Until We Die - игра над которой работаю
|
|
| |