Перемещение объекта пальцем

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Перемещение объекта пальцем

Сообщение Mir 12 июл 2018, 21:12

ПРивет всем!

Как сделать перемещение объекта пальцем на телефоне? Мне нужно чтобы игрок двигал пальцем и перемещал куб. Или мышкой двигал этот куб. куда палец туда и кубик.

Как это реализуется? не могу найти уроков? плиз поомгите)
в игре Rise Up такая функция реализована.
Mir
UNIт
 
Сообщения: 82
Зарегистрирован: 18 июн 2016, 19:44

Re: Перемещение объекта пальцем

Сообщение 1max1 12 июл 2018, 21:22

Берешь позицию своего тыка, переводишь экранные координаты в мировые и перемещаешь свой куб в эту точку.

Синтаксис:
Используется csharp
void Update()
{
    for (int i = 0; i < Input.touchCount; i++)
    {
        if (Input.GetTouch(i).phase == TouchPhase.Moved)
        {
            Vector3 p = Camera.main.ScreenToWorldPoint(Input.GetTouch(i).position);
            p.z = cube.transform.position.z;
            cube.transform.position = p;
        }
    }
}
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Перемещение объекта пальцем

Сообщение Cr0c 13 июл 2018, 11:27

Нельзя тут ScreenToWorldPoint, это будет баговать. Там же получается плоскость из экрана - то есть углы экрана дальше от камеры, чем центр. Тут надо луч брать из точки и по нему считать origin+direction*distance
Я проверял уже, у меня такой баг был ))
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Перемещение объекта пальцем

Сообщение Mir 14 июл 2018, 09:19

Cr0c писал(а):Нельзя тут ScreenToWorldPoint, это будет баговать. Там же получается плоскость из экрана - то есть углы экрана дальше от камеры, чем центр. Тут надо луч брать из точки и по нему считать origin+direction*distance
Я проверял уже, у меня такой баг был ))



Можно пример вашего кода ) с правильной работой)
Mir
UNIт
 
Сообщения: 82
Зарегистрирован: 18 июн 2016, 19:44

Re: Перемещение объекта пальцем

Сообщение Cr0c 14 июл 2018, 10:07

Писал с телефона, мог промахнуться где-то
Синтаксис:
Используется csharp
public Transform target;
private Vector3 offset;
private float distance;
void Update() {
 if (Input.GetMouseButtonDown(0)) {
  RaycastHit hit;
  Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  if (Physics.Raycast(ray, out hit)) {
   target = hit.transform;
   offset = target.position - hit.point;
   distance = hit.distance;
  }
 }
 if (Input.GetMouseButton(0) && !Input.GetMouseButtonDown(0) && target != null) {
  Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  target.position = ray.origin + ray.direction * distance + offset;
 }
 if (Input.GetMouseButtonUp(0)
  target = null;
}
 
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Перемещение объекта пальцем

Сообщение Mir 14 июл 2018, 10:33

Работает. спасибо большое)

А где подправить чтобы двигался объект только влево вправо?
Mir
UNIт
 
Сообщения: 82
Зарегистрирован: 18 июн 2016, 19:44

Re: Перемещение объекта пальцем

Сообщение Cr0c 14 июл 2018, 16:50

Что такое "влево вправо"? Это неопределенное выражение. По мировым осям? По локальным осям? По осям камеры?
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Перемещение объекта пальцем

Сообщение Mir 15 июл 2018, 15:29

Cr0c писал(а):Что такое "влево вправо"? Это неопределенное выражение. По мировым осям? По локальным осям? По осям камеры?


по мировым
Mir
UNIт
 
Сообщения: 82
Зарегистрирован: 18 июн 2016, 19:44

Re: Перемещение объекта пальцем

Сообщение 1max1 15 июл 2018, 15:36

А где подправить чтобы двигался объект только влево вправо?

Достаточно обнулить YZ координаты вектора движения во время смещения и оставить только Х.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Перемещение объекта пальцем

Сообщение Cr0c 15 июл 2018, 19:51

Mir писал(а):
Cr0c писал(а):Что такое "влево вправо"? Это неопределенное выражение. По мировым осям? По локальным осям? По осям камеры?


по мировым

То есть камера у тебя вращаться не будет?
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Перемещение объекта пальцем

Сообщение Mir 16 июл 2018, 19:55

То есть камера у тебя вращаться не будет?


как вращаться? это 2D проект
Mir
UNIт
 
Сообщения: 82
Зарегистрирован: 18 июн 2016, 19:44

Re: Перемещение объекта пальцем

Сообщение Cr0c 17 июл 2018, 08:54

Синтаксис:
Используется csharp
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
ray.direction.y = transform.position.y;
ray.direction.z = transform.position.z;
 
Последний раз редактировалось Cr0c 17 июл 2018, 13:52, всего редактировалось 1 раз.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Перемещение объекта пальцем

Сообщение Cr0c 17 июл 2018, 08:56

Mir писал(а):как вращаться? это 2D проект

И откуда это должно было быть известно мне? Хотя это и не был ответ на вопрос, но ладно. Ворбще, камера и в 2д вращаться может.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Перемещение объекта пальцем

Сообщение Mir 17 июл 2018, 13:05

Cr0c писал(а):
Mir писал(а):как вращаться? это 2D проект

И откуда это должно было быть известно мне? Хотя это и не был ответ на вопрос, но ладно. Ворбще, камера и в 2д вращаться может.


а что имеется ввиду под вращением?
Mir
UNIт
 
Сообщения: 82
Зарегистрирован: 18 июн 2016, 19:44

Re: Перемещение объекта пальцем

Сообщение Cr0c 17 июл 2018, 13:50

Mir писал(а):а что имеется ввиду под вращением?

А что, там есть более одного смысла?
P.S.: поправил код. Теперь только по Х перемещает, независимо от поворота камеры.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

След.

Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: GoGo.Ru [Bot] и гости: 30