Форум программистов, компьютерный форум, киберфорум
Наши страницы
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
 
Frai32
0 / 2 / 1
Регистрация: 24.08.2013
Сообщений: 137
1

Реализация управления на TouchScreen

09.09.2015, 01:37. Просмотров 379. Ответов 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
Ответы с готовыми решениями:

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

Реализация управления клавиатурой (Java)
Добрый вечер! Создаю простую змейку. Столкнулся с одной проблемой. В классе...

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

Реализация управления из командной строки
Всем приветики-чмок. Есть пара вопросов: 1. Как правильно реализовать...

Реализация обращения к схожим элементам управления в цикле
Попробую сформулировать. Можно ли к элементам управления обращаться так, чтобы...

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

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

Проектирование и реализация систем управления климатическими параметрами помещения
проектирование и реализация системы управления климатическими параметрами...

Реализация библиотеки для создания и управления пользовательской кучей
Привет всем. Как я понял, мне нужно реализовать процедуры new и dispose. Я в...


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

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

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