Input.GetAxis для Android

Я создаю игру-лабиринт, и в настоящее время у меня возникают задержки с управлением Android. Я настроил управление компьютером, чтобы двигаться вперед, поворачивать влево и вправо и прыгать, используя input.getaxis. Теперь на Android я создал кнопки, которые работают, но не так, как я хочу. Он может прыгать и поворачиваться, как я хочу, но он не двигается должным образом. Есть 2 проблемы: одна заключается в том, что когда я нажимаю, он немного перемещается, а затем мне нужно щелкнуть еще раз, но я хочу удерживать, и он будет двигаться непрерывно, а вторая проблема заключается в том, что когда я поворачиваю, персонаж не движется правильно, он всегда продолжается. x с input.getaxis все работает отлично, но мне нужно что-то, что будет работать для Android, вот мой код:

using UnityEngine;
using System.Collections;

public class PlayerMovement : MonoBehaviour {
    public float speed;
    public float speedj;
    Rigidbody rb;
    static Animator anim;
    void Start()
    {
        rb = GetComponent<Rigidbody>();
        anim = GetComponent<Animator>();
    }
    public void Walk ()
    {
        anim.SetTrigger ("Walk");
        rb.velocity = new Vector3 (0,0,7f);
    }
    public void Left ()
    {
        transform.Rotate(0,-90f,0);
    }
    public void Right ()
    {
        transform.Rotate(0,90f,0);
    }
    public void Jump ()
    {
        anim.SetTrigger ("Jump");
        rb.velocity = new Vector3 (0,4f,0);

    }
    public void StopVelocity ()
    {
        rb.velocity = Vector3.zero;
        transform.Translate(0,0,0);
    }
    void FixedUpdate ()
    {
        float x = Input.GetAxis ("Horizontal") * Time.deltaTime * speed;
        float z = Input.GetAxis ("Vertical") * Time.deltaTime * speed;
        transform.Translate (0,0,z);
        transform.Rotate (0,x,0);
        if(Input.GetKey(KeyCode.Space))
        {
            anim.SetTrigger ("Jump");
            rb.velocity = new Vector3 (0,speedj,0);
        }
    }
}

Итак, это функция fixedUpdate для компьютера, остальные - для кнопок для Android. Я использую триггер событий для событий перемещения указателя вверх и вниз, пожалуйста, помогите мне изменить код, чтобы он работал для Android, как он работает с Input.getAxis для компьютера. Благодарность!


person Melinceanu Victor    schedule 16.07.2016    source источник


Ответы (1)


«когда я нажимаю, он немного перемещается, а затем мне нужно нажать еще раз, но я хочу удерживать, и он будет двигаться непрерывно».

Использование здесь EventTrigger должно быть оптимальным способом. Проверьте OnPointerDown(); функция должна вызываться для каждого кадра. Вы должны прикрепить EventTrigger к кнопке, чтобы он работал на мобильных устройствах.

"когда я поворачиваюсь, персонаж не двигается в правильном направлении."

Попробуйте двигаться вперед с помощью Local Transforms Forward. А именно Transform.Forward(). Это позволит вам двигаться вперед в направлении, которое вы установили ранее, вперед всегда является нормализованным вектором3. Движение таким образом, как вы, будет использовать мировую ось, ваше вращение не будет иметь никакого значения.

person Ahmet A.    schedule 16.07.2016
comment
я уже использовал eventtrigger, спасибо, я попробую и дам вам знать, я думаю, что с вращением это сработает, но с триггером события я уже пробовал с указателем, спасибо, может быть, у вас есть другое решение для первой проблемы - person Melinceanu Victor; 16.07.2016
comment
Я также использовал oppointerup, может быть, я должен удалить его, может быть, это плохо - person Melinceanu Victor; 16.07.2016