UI Button нажатие кнопки, как сделать длительное нажатие?

Создал 2д платформер управление поставил на UI Button надо чтобы когда я нажал например на правую кнопку персонаж пошел направо и когда я опустил кнопку он остановился, но у меня както подругому кнопка реагирует на одно нажатие. Тоесть надо многократно нажать на кнопку чтобы персонаж пошел направо.

using UnityEngine;
using System.Collections;

public class characterController : MonoBehaviour {
        public float maxSpeed = 10f;
        public float jumpForce = 700f;
        bool facingRight = true;
        bool grounded;
        public Transform groundCheck;
        public float groundRadius = 0.2f;
        public LayerMask whatIsGround;
        public int score;
        float move = 0;

        // Use this for initialization
        void Start () {
                
        }
        
        // Update is called once per frame
        private void FixedUpdate () {
                #if !UNITY_ANDROID && !UNITY_IPHONE && !UNITY_BLACKBERRY && !UNITY_WINRT || UNITY_EDITOR
                move = Input.GetAxis("Horizontal");
                #else
                Move (move);
                #endif
                grounded = Physics2D.OverlapCircle (groundCheck.position, groundRadius, whatIsGround);
        }

        void Update(){
                if ((Input.GetKeyDown (KeyCode.W)||Input.GetKeyDown (KeyCode.UpArrow)) &&  grounded) {
                        
                        GetComponent<Rigidbody2D>().AddForce (new Vector2(0f,jumpForce));
                }
                GetComponent<Rigidbody2D>().velocity = new Vector2 (move * maxSpeed, GetComponent<Rigidbody2D>().velocity.y);
                
                if (move > 0 && !facingRight)
                        Flip ();
                else if (move < 0 && facingRight)
                        Flip ();
                
                
                
                if (Input.GetKey(KeyCode.Escape))
                {
                        Application.Quit();
                }
                
                if (Input.GetKey(KeyCode.R))
                {
                        Application.LoadLevel(Application.loadedLevel);
                }
                
                
        }

        void Move(float horizonalmove)
        {
                if (grounded) return;
                
                Vector3 moveVel = GetComponent<Rigidbody2D>().velocity;
                moveVel.x = horizonalmove * maxSpeed;
                GetComponent<Rigidbody2D>().velocity = moveVel;
        }

        public void Jump()
        {
                if (grounded) 
                        GetComponent<Rigidbody2D>().AddForce (new Vector2(0f,jumpForce));                         
        }

        public void StartMoving(float horizonalmove)
        {
                move = horizonalmove;
        }

        void Flip(){
                facingRight = !facingRight;
                Vector3 theScale = transform.localScale;
                theScale.x *= -1;
                transform.localScale = theScale;
        } 
        void OnGUI(){
                GUI.Box (new Rect (0, 0, 100, 100), "Stars: " + score);
    }
}
  • Вопрос задан
  • 3965 просмотров
Решения вопроса 1
Neuroware
@Neuroware
Программист в свободное от работы время
вместо keydown использовать getkey
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы