Страница 1 из 2

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

СообщениеДобавлено: 12 июл 2018, 21:12
Mir
ПРивет всем!

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

Как это реализуется? не могу найти уроков? плиз поомгите)
в игре Rise Up такая функция реализована.

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

СообщениеДобавлено: 12 июл 2018, 21:22
1max1
Берешь позицию своего тыка, переводишь экранные координаты в мировые и перемещаешь свой куб в эту точку.

Синтаксис:
Используется 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;
        }
    }
}

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

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

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

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



Можно пример вашего кода ) с правильной работой)

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

СообщениеДобавлено: 14 июл 2018, 10:07
Cr0c
Писал с телефона, мог промахнуться где-то
Синтаксис:
Используется 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;
}
 

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

СообщениеДобавлено: 14 июл 2018, 10:33
Mir
Работает. спасибо большое)

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

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

СообщениеДобавлено: 14 июл 2018, 16:50
Cr0c
Что такое "влево вправо"? Это неопределенное выражение. По мировым осям? По локальным осям? По осям камеры?

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

СообщениеДобавлено: 15 июл 2018, 15:29
Mir
Cr0c писал(а):Что такое "влево вправо"? Это неопределенное выражение. По мировым осям? По локальным осям? По осям камеры?


по мировым

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

СообщениеДобавлено: 15 июл 2018, 15:36
1max1
А где подправить чтобы двигался объект только влево вправо?

Достаточно обнулить YZ координаты вектора движения во время смещения и оставить только Х.

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

СообщениеДобавлено: 15 июл 2018, 19:51
Cr0c
Mir писал(а):
Cr0c писал(а):Что такое "влево вправо"? Это неопределенное выражение. По мировым осям? По локальным осям? По осям камеры?


по мировым

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

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

СообщениеДобавлено: 16 июл 2018, 19:55
Mir
То есть камера у тебя вращаться не будет?


как вращаться? это 2D проект

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

СообщениеДобавлено: 17 июл 2018, 08:54
Cr0c
Синтаксис:
Используется csharp
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
ray.direction.y = transform.position.y;
ray.direction.z = transform.position.z;
 

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

СообщениеДобавлено: 17 июл 2018, 08:56
Cr0c
Mir писал(а):как вращаться? это 2D проект

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

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

СообщениеДобавлено: 17 июл 2018, 13:05
Mir
Cr0c писал(а):
Mir писал(а):как вращаться? это 2D проект

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


а что имеется ввиду под вращением?

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

СообщениеДобавлено: 17 июл 2018, 13:50
Cr0c
Mir писал(а):а что имеется ввиду под вращением?

А что, там есть более одного смысла?
P.S.: поправил код. Теперь только по Х перемещает, независимо от поворота камеры.