Страница 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.: поправил код. Теперь только по Х перемещает, независимо от поворота камеры.