- Home /
Platformer move script
I am using the UI System and my character moves as I want when I use a joystick or keyboard. but in the UI system is not working as I want because, I want to move to the opposite direction when I press the opposite key for example, the player is moving to the right but if I want to move to the Left, I need to stop touching the right arrow in the screen and then go to the left, so the problem is that I want to change to the opposite direction when ever I press the left or right UI button but without raising my finger from the screen.
This is the move script im using
using UnityEngine; using System.Collections;
public class PlayerController : MonoBehaviour { public float speed = 10, jumpVelocity = 10, bulletSpeed = 10; public LayerMask playerMask; public bool canMoveInAir = true; Transform myTrans, tagGround; Rigidbody2D myBody; bool isGrounded = false; float hInput; AnimatorController myAnim; public GameObject bullet;
void Start ()
{
myBody = this.GetComponent<Rigidbody2D>();
myTrans = this.transform;
tagGround = GameObject.Find (this.name + "/tag_ground").transform;
}
void FixedUpdate ()
{
myAnim = AnimatorController.instance;
myAnim.UpdateIsGrounded (isGrounded);
isGrounded = Physics2D.Linecast (myTrans.position, tagGround.position, playerMask);
#if !UNITY_ANDROID && !UNITY_IPHONE && !UNITY_BLACKBERRY && !UNITY_WINRT || UNITY_EDITOR
hInput = Input.GetAxisRaw("Horizontal");
myAnim.UpdateSpeed(hInput);
if(Input.GetButtonDown("Jump"))
Jump();
#endif
Move(hInput);
}
void Move(float horizonalInput)
{
if(!canMoveInAir && !isGrounded)
return;
Vector2 moveVel = myBody.velocity;
moveVel.x = horizonalInput * speed;
myBody.velocity = moveVel;
}
public void Jump()
{
if(isGrounded)
myBody.velocity += jumpVelocity * Vector2.up;
}
public void StartMoving(float horizonalInput)
{
myAnim.UpdateSpeed(horizonalInput);
hInput = horizonalInput;
}
public void Shoot()
{
if(Input.GetKeyDown("Fire1"))
{
GameObject beam = Instantiate(bullet,transform.position,Quaternion.identity) as GameObject;
beam.GetComponent<Rigidbody2D>().velocity = new Vector3(bulletSpeed,0,0);
}
}
}