0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 133
1

Джойстик

02.10.2018, 19:50. Показов 5860. Ответов 9

Я создал джойстик, из 2 Image, и сделал весь функционал, что бы он работал как джойстик, но такая игра что может понадобиться экран под джойстиком, поэтому была идея сделать, что бы при касании на месте куда попал попал палец появлялся джойстик.
И он появляется, но перестал работать как джойстик
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class Jostick : MonoBehaviour, IDragHandler, IPointerDownHandler, IPointerUpHandler {
 
    public Image fon;
    public Image jos;
    private Vector2 step;
 
    public virtual void OnDrag(PointerEventData dat)
    {
        Vector2 pos;
        if (RectTransformUtility.ScreenPointToLocalPointInRectangle(fon.rectTransform, dat.position, dat.pressEventCamera, out pos))
        {
            pos.x = (pos.x / fon.rectTransform.sizeDelta.x);
            pos.y = (pos.y / fon.rectTransform.sizeDelta.y);
 
            step = new Vector2(pos.x * 2 - 1, pos.y * 2 - 1);
            step = (step.magnitude > 1.0f) ? step.normalized : step;
            jos.rectTransform.anchoredPosition = new Vector2(step.x * (fon.rectTransform.sizeDelta.x /2), step.y * (fon.rectTransform.sizeDelta.y / 2));
        }
    }
    public virtual void OnPointerDown(PointerEventData dat)
    {
        OnDrag(dat);
    }
    public virtual void OnPointerUp(PointerEventData dat)
    {
        step = Vector2.zero;
        jos.rectTransform.anchoredPosition = Vector2.zero;
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 public GameObject jos;
    private Jostick js;
 
    private void Start()
    {
        js = GameObject.FindGameObjectWithTag("Jos").GetComponent<Jostick>();
    }
    private void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            jos.SetActive(true);
            Vector3 mP = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 1f));
            jos.transform.position = mP;
 
        }
        else if (Input.GetMouseButton(0))
        {
        }
        else
        {
            jos.SetActive(false);
        }
    }
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.10.2018, 19:50
Ответы с готовыми решениями:

Стандартный джойстик
В Unity в папке Standard Assets (Mobile) для управления есть стандартный двухкнопочный джойстик...

Джойстик для Unity3d
Подключаю джойстики из Standart Assets, на персонаже скрипт движения, работает от переменных float...

Сенсорный джойстик в Unity 5
Добрый день. Есть следующий код (приведен ниже). Работает от нажатия на A, D и Space. Как можно его...

Джойстик для управления камерой и масштабирования
На сцене присутствуют пара объектов и камера. Необходимо, чтобы камера крутилась вокруг точки,...

9
115 / 83 / 43
Регистрация: 19.01.2018
Сообщений: 484
02.10.2018, 20:13 2
Цитата Сообщение от Svetl9chok Посмотреть сообщение
public virtual void
меня сразу смутили виртуальные методы, зачем? И без этого будут работать.
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 133
02.10.2018, 20:27  [ТС] 3
RostikTawer, Эти методы отвечаю за нажатие\удержание\убирание пальца с экрана, на image
0
115 / 83 / 43
Регистрация: 19.01.2018
Сообщений: 484
02.10.2018, 20:37 4
Svetl9chok, я знаю, но добавлять приставку virtual совсем не объязательно
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 133
02.10.2018, 20:42  [ТС] 5
RostikTawer, Учту, а по поводу моей проблемы есть мысли?
0
115 / 83 / 43
Регистрация: 19.01.2018
Сообщений: 484
02.10.2018, 20:55 6
Svetl9chok, по коду так не скажешь, но можешь сделать проект с такой же проблемой и скинуть, я посмотрел бы лучше.

Добавлено через 41 секунду
Ну или можешь объяснить по подробнее, не работает в смысле нажатия не работают и что-то другое...
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 133
02.10.2018, 21:15  [ТС] 7
RostikTawer, Когда я отключаю 2 скрипт, все работает, джойстик работает как джойстик, но когда не отключаю ,при нажатии на экран появляется джойстик, но он как просто картинка, то есть вообще не работает
0
115 / 83 / 43
Регистрация: 19.01.2018
Сообщений: 484
02.10.2018, 21:28 8
Svetl9chok, попробуй вместо скрипта использовать Event Trigger
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 133
07.10.2018, 19:26  [ТС] 9
RostikTawer, Как ни пробую, у меня не выходит, мог бы написать что ты конкретно придумал?
0
115 / 83 / 43
Регистрация: 19.01.2018
Сообщений: 484
07.10.2018, 19:45 10
Svetl9chok, есть компонент Event Trigger (только для UI, по-моему), там есть триггеры т.е. нажатия, наведения, зажатия и т.д., если на любой UI объект который является RayCast таргетом сработало это события то вызывается метод который ты укажешь, сделай след.:
1) Поставь компонент Image (либо любой другой для имитация нажатия, Image проще всего т.к. это будет картинка);
2) Добавь к нему компонент Event Trigger;
3) Добавить в компоненте триггер который тебе нужен;
4) Назначить на этот триггер публичный метод;
А если тебе нужно
Цитата Сообщение от Svetl9chok Посмотреть сообщение
касании на месте куда попал попал палец появлялся джойстик.
то можешь брать касания по панели которая будет невидима сзади либо простым рейкастом, позиции там будут одни и те же.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.10.2018, 19:45

Не могу добавить прыжок на джойстик в unity
у меня возникают проблемы с добавлением прыжка на джойстик в unity.Вроде какой-то скрипт я...

Поворот камеры через джойстик в Unity 3D
В общем, у меня такая проблема: делаю игру на Unity 3D для Android, есть стандартный FPS контроллер...

Джойстик выдает неправильные значения Unity
Привет форумчане! Делаю 3d игру по учебнику, где был приведен код C# ниже для джойстика. По идее...

Проблема Unity с управлением C# движение персонажа джойстик
Сделал сцену с персонажем которым по идее должен управлять джойстиком персонаж имеет компонент...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru