Android контролы движения персонажа

Графический интерфейс пользователя

Android контролы движения персонажа

Сообщение albrodsky 17 мар 2015, 00:37

Доброго времени суток! Подскажите пожалуйста... На PC в движении объекта использую GetAxis("Horizontal") и вообще вот таким образом... Подскажите как сделать такое же движение только на андроид устройстве с помощью кнопок влево, вправо и прыгать... Огромное спасибо за ответы!
Синтаксис:
Используется csharp

void Update()
        {
        float moveHorizontal = Input.GetAxis("Horizontal");
        Move(moveHorizontal);
        Animating(moveHorizontal);
        Rotate(moveHorizontal);
        if (Input.GetButtonDown("Jump"))
        {
            Jump();            
        }

        }

    void Move(float h)
    {
        movement.Set(h, 0.0f, 0.0f);
        movement = movement.normalized * speed * Time.deltaTime;
        rb.MovePosition(transform.position + movement);
    }

    void Rotate(float h)
    {
        if (h < 0f && facingRight == true)
        {
            facingRight = false;
            tr.Rotate(new Vector3(0.0f, 180.0f, 0.0f));
        }
        if (h > 0f && facingRight == false)
        {
            facingRight = true;
            tr.Rotate(new Vector3(0.0f, 180.0f, 0.0f));
        }
       
    }

    void Animating(float h)
    {
        bool walking = h != 0f;
        anim.SetBool("IsWalking", walking);
    }
    void Jump()
    {
        rb.AddForce(0.0f, 7.0f, 0.0f, ForceMode.Impulse);
        anim.SetTrigger("Jump");
    }

 
albrodsky
UNец
 
Сообщения: 2
Зарегистрирован: 22 дек 2014, 12:00

Re: Android контролы движения персонажа

Сообщение romeo98 19 мар 2015, 14:52

Когда зажата uGUi кнопка, то посылать объекту на котором висит скрипт сообщение "Move" и "Rotate" с параметром 1 или -1 (взависимости от направления кнопки). У меня была похожая задача.

Я бы сделал так:
[*] добавил к обоим кнопкам компонент "Event Trigger"
[*] Добавил 2 события: нажатие и отпуск кнопки
[*] на нажатие (PointerDown) кнопки я ссылаюсь на функцию, которая запускает корутину. Корутина же постоянно вызывается
Синтаксис:
Используется csharp
   public void StartMove(int dir)
    {
        StartCoroutine("MoveCoroutine", dir);
        Rotate(dir);
    }

    IEnumerator MoveCoroutine(int dir)
    {
        for (; ; )
        {
Move(dir);
        }
    }
 

[*] А при отпуске кнопки выключаю корутину (PointerUp)


Честно говоря, не знаю насколько это изящное решение задачи, но у меня оно работает. Вот я и не ищу более изящных)
Я помог? Ты Unity разработчик? ПОМОГИ МНЕ! Поставь лайк за проект Mission: Defender на Unity Connect ЗДЕСЬ !
romeo98
UNITрон
 
Сообщения: 312
Зарегистрирован: 03 янв 2014, 15:54
Skype: romeotallinn
  • Сайт


Вернуться в uGUI

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2