Форум программистов, компьютерный форум, киберфорум
Наши страницы

Unity, Unity3D

Войти
Регистрация
Восстановить пароль
 
Frai32
0 / 2 / 0
Регистрация: 24.08.2013
Сообщений: 137
#1

Реализация управления на TouchScreen - Unity, Unity3D

09.09.2015, 01:37. Просмотров 354. Ответов 1
Метки нет (Все метки)

Я реализовал управления на Устройстве под Android используя объекты UI Canvas. Но беда в том, что персонаж двигается не плавно, а рывками, при этом на клавиатуре все работает нормально. В канвасе я использовал элементы image с компонентом Ivent Trriger, внутри него добавил компонент Pointer down. Я думаю это связано с тем, что на клавиатуре можно зажимать кнопки, а эти элементы не реагируют на зажимание. Собственно вопрос в том как сделать такое управление на тач скрине чтобы персонаж мог двигаться не рывками, а пока палец нажат на кнопке?

Код
[HideInInspector] public bool facingRight = true;
[HideInInspector]public bool jump = false;

public float moveForce = 365f;
***public float maxSpeed = 5f;
***public float jumpForce = 1000f;
***public Transform groundCheck;
***float hInput = 0;
***private bool grounded = false;
***private Animator anim;
***private Rigidbody2D rb2d;
***// Use this for initialization
***void Awake () {
****anim = GetComponent<Animator> ();
****rb2d = GetComponent<Rigidbody2D> ();

***}
*****
***// Update is called once per frame
***void Update () {
****grounded = Physics2D.Linecast (transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));
****if (Input.GetButton ("Jump") && grounded) {
*****jump = true;
****}

***}

***public void Jump()
***{

****grounded = Physics2D.Linecast (transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));
****if (Input.GetButton("Jump") && grounded) {
*****jump = true;
****}
***}

***void FixedUpdate()
***{
****float h = Input.GetAxis ("Horizontal");
****Debug.Log (h.ToString ());
****anim.SetFloat ("Speed", Mathf.Abs (h));

****if (h * rb2d.velocity.x < maxSpeed)
*****rb2d.AddForce(Vector2.right * h * moveForce);
******
****if (Mathf.Abs (rb2d.velocity.x) > maxSpeed)
*****rb2d.velocity = new Vector2 (Mathf.Sign (rb2d.velocity.x) * maxSpeed, rb2d.velocity.y);

****if (h > 0 && !facingRight)
*****Flip ();
****else if (h < 0 && facingRight)
*****Flip ();

****if(jump)
****{
*****anim.SetTrigger ("Jump");
*****rb2d.AddForce (new Vector2(0f, jumpForce));
*****jump = false;
****}

***}

***public void Tjump()
***{
****Debug.Log ("push");
****if ( grounded) {
*****jump = true;
****}
****if(jump)
****{
*****anim.SetTrigger ("Jump");
*****rb2d.AddForce (new Vector2(0f, 100));
*****jump = false;
****}

***}

***public void StartMoving(float h)
***{
****Debug.Log ("push"+" " + h.ToString());

****anim.SetFloat ("Speed", Mathf.Abs (h));

****if (h * rb2d.velocity.x < maxSpeed)
*****rb2d.AddForce(Vector2.right * h * moveForce);
******
****if (Mathf.Abs (rb2d.velocity.x) > maxSpeed)
*****rb2d.velocity = new Vector2 (Mathf.Sign (rb2d.velocity.x) * maxSpeed, rb2d.velocity.y);

****if (h > 0 && !facingRight)
*****Flip ();
****else if (h < 0 && facingRight)
*****Flip ();
***}

***void Flip()
***{
****facingRight = !facingRight;
****Vector3 theScale = transform.localScale;
****theScale.x *= -1;
****transform.localScale = theScale;
***}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2015, 01:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализация управления на TouchScreen (Unity, Unity3D):

Реализация управления клавишами(стрелки) - C++
Всем привет. Собственно в чем вопрос. Пишу простенькую базу данных студентов и хочу реализовать выбор в меню как в биосе. Тобишь, у...

Реализация управления браузером webbrowser - C#
Здравствуйте! Нужно решить следующий вопрос: Можно ли каким-либо образом управлять компонентом webBrowser ? Допустим в webBrowser открыта...

Реализация управления из командной строки - C++
Всем приветики-чмок. Есть пара вопросов: 1. Как правильно реализовать управление типа &quot;gccp file show f.cpp&quot; (название_программы...

Реализация обращения к схожим элементам управления в цикле - Visual Basic .NET
Попробую сформулировать. Можно ли к элементам управления обращаться так, чтобы их название &quot;склеивалось&quot; Имеем десять &quot;TextBox1&quot;,...

Реализация формирования и добавления цены в базе управления заказами - MS Access
Добрый день. Необходимо создать базу данных для управления заказами. На данный моменент есть таблица содержащия данные клинетов...

Проектирование и реализация систем управления климатическими параметрами помещения - Контроллеры PLC
проектирование и реализация системы управления климатическими параметрами помещения на языке РКС вспомощью контроллера Фатек. Дорогие...

1
cortexdeveloper
8 / 8 / 3
Регистрация: 31.07.2015
Сообщений: 71
10.09.2015, 15:49 #2
Я делал через pointer down и все работает.
Приеду домой посмотрю сам скрипт.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2015, 15:49
Привет! Вот еще темы с ответами:

Touchscreen работает частично - Смартфоны
ребята ВЫРУЧИТЕ что сделать ?куда бежать, писать, что качать (программу)? чтоб зайти на i9003, сенсор сломан - работает только сверху ,...

microsoft surface touchscreen computer - Компьютерное железо
Стоит посмотреть. http://youtube.com/watch?v=ttQOQDu-IQs&amp;mode=related&amp;search

Интерактивная сенсорная touchscreen пленка - Мониторы
Доброго времени суток! Хотел узнать подробнее о пленке, которая накладывается на монитор(не рамка). Может кто-нибудь сталкивался... Не...

Touchscreen. Как определить, что экран сенсорный - C++ Builder
Как программно определить, что программа запущена на компьютере с сенсорным дисплеем? Например на планшете под win 8.1 или win 10. C++...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.