Создал 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);
}
}