Привет! Помогите, пожалуйста, разобраться с тач скрин управлением. Написал такой код в скрипте PlayerController(Это, разумеется, часть кода)
public void MoveLeft() {
GetComponent<Rigidbody2D>().velocity = new Vector2(-moveSpeed, GetComponent<Rigidbody2D>().velocity.y); } public void MoveRight() {
GetComponent<Rigidbody2D>().velocity = new Vector2(moveSpeed, GetComponent<Rigidbody2D>().velocity.y); }
А в скрипте Touch Control написал это
public void MoveLeft() {
GetComponent<Rigidbody2D>().velocity = new Vector2(-moveSpeed, GetComponent<Rigidbody2D>().velocity.y); } public void MoveRight() {
GetComponent<Rigidbody2D>().velocity = new Vector2(moveSpeed, GetComponent<Rigidbody2D>().velocity.y); }
Дак вот, на первый взгляд кажется, что все работает.Но тут есть одна проблема. То есть, что бы персонаж бежал, нужно постоянно тыкать на кнопку бега. Как можно сделать так, что бы персонаж все время бежал при удерживании кнопки бега?
Если вдруг поможет полный код, то вот он. Сразу говорю, он ужасен, потому что я в программировании полный 0.Но все же..
using UnityEngine; using System.Collections;
public class PlayerController : MonoBehaviour {
public float moveSpeed; //private float moveVelocity; Убрал за ненадобностью. Вместо этого добавил бокс коллайедер и дал ему материал с трением 0. public float jumpHeight;
public Transform groundCheck; public float groundCheckRadius; public LayerMask whatIsGround; private bool grounded;
private bool doubleJumped;
private Animator anim;
public Transform firePoint; public GameObject arrow;
public int arrowIs;
public float knockback; public float knockbackLength; public float knockbackCount; public bool knockFromRight;
public bool onLadder; public float climbSpeed; private float climbVelocity; private float gravityStore; public float climbSpeedX;
// Use this for initialization void Start () { anim = GetComponent<Animator> ();
// Update is called once per frame void Update () {
if (grounded) doubleJumped = false;
anim.SetBool ("Grounded", grounded);
#if UNITY_STANDALONE || UNITY_WEBPLAYER
if (Input.GetButtonDown("Jump") && grounded) { //GetComponent<Rigidbody2D>().velocity = new Vector2(GetComponent<Rigidbody2D>().velocity.x, jumpHeight);
Jump(); }
if (Input.GetButtonDown("Jump") && !doubleJumped && !grounded) { //GetComponent<Rigidbody2D>().velocity = new Vector2(GetComponent<Rigidbody2D>().velocity.x, jumpHeight); Jump(); doubleJumped = true; }
//moveVelocity = 0f; if (Input.GetKey (KeyCode.D)) { MoveRight (); //GetComponent<Rigidbody2D>().velocity = new Vector2(moveSpeed, GetComponent<Rigidbody2D>().velocity.y); //moveVelocity = moveSpeed; Убрал за ненадобностью. Вместо этого добавил бокс коллайедер и дал ему материал с трением 0. }
if (Input.GetKey (KeyCode.A)) { MoveLeft (); //GetComponent<Rigidbody2D>().velocity = new Vector2(-moveSpeed, GetComponent<Rigidbody2D>().velocity.y); //moveVelocity = -moveSpeed; Убрал за ненадобностью. Вместо этого добавил бокс коллайедер и дал ему материал с трением 0. }
#endif
if (knockbackCount <= 0) { Debug.Log ("Ready for knockback"); } else { if(knockFromRight) GetComponent<Rigidbody2D>().velocity = new Vector2(-knockback, knockback); if(!knockFromRight) GetComponent<Rigidbody2D>().velocity = new Vector2(knockback, knockback); knockbackCount -= Time.deltaTime; }
//GetComponent<Rigidbody2D> ().velocity = new Vector2 (moveVelocity, GetComponent<Rigidbody2D> ().velocity.y); Убрал за ненадобностью. Вместо этого добавил бокс коллайедер и дал ему материал с трением 0.
GetComponent<Rigidbody2D>().velocity = new Vector2(0, climbVelocity);
anim.SetBool("Climb", true);
if (Input.GetKey (KeyCode.D)) { GetComponent<Rigidbody2D>().velocity = new Vector2(climbSpeedX, GetComponent<Rigidbody2D>().velocity.y); //moveVelocity = moveSpeed; Убрал за ненадобностью. Вместо этого добавил бокс коллайедер и дал ему материал с трением 0. }
if (Input.GetKey (KeyCode.A)) { GetComponent<Rigidbody2D>().velocity = new Vector2(-climbSpeedX, GetComponent<Rigidbody2D>().velocity.y); //moveVelocity = -moveSpeed; Убрал за ненадобностью. Вместо этого добавил бокс коллайедер и дал ему материал с трением 0. }