TouchScreen Controls?
Hi, i'm pretty new to unity and I have made a player script for my 2D character and would like to know how i can have touch input controls in my IOS game.
I have UI buttons that I want to perform these actions when touched: walk left, walk right, ninjaStar, sword attack, and jump.
I have only configured these actions to specific keys for a PC. How can I add touch input into my Player Script?
using UnityEngine;
using System.Collections;
public class PlayerControl : MonoBehaviour {
public float maxSpeed = 10f;
bool facingRight = true;
Animator anim;
bool grounded = false;
public Transform groundCheck;
float groundRadius = 0.2f;
public LayerMask whatIsGround;
public float jumpForce = 700f;
bool doubleJump = false;
public Transform firePoint;
public GameObject ninjaStar;
public float shotDelay;
private float shotDelayCounter;
public float knockback;
public float knockbackCount;
public float knockbackLength;
public bool knockFromRight;
// Use this for initialization
void Start () {
anim = GetComponent<Animator>();
}
// Update is called once per frame
void FixedUpdate () {
grounded = Physics2D.OverlapCircle (groundCheck.position, groundRadius, whatIsGround);
anim.SetBool ("Ground", grounded);
if (grounded)
doubleJump = false;
anim.SetFloat ("vSpeed", GetComponent<Rigidbody2D> ().velocity.y);
float move = Input.GetAxis ("Horizontal");
Move(Input.GetAxis("Horizontal"));
anim.SetFloat ("Speed", Mathf.Abs (move));
if (knockbackCount <= 0)
{
GetComponent<Rigidbody2D> ().velocity = new Vector2 (move * maxSpeed, GetComponent<Rigidbody2D> ().velocity.y);
} else {
if(knockFromRight)
GetComponent<Rigidbody2D> ().velocity = new Vector2 (-knockback, knockback);
if(!knockFromRight)
GetComponent<Rigidbody2D> ().velocity = new Vector2 (knockback, knockback);
knockbackCount -= Time.deltaTime;
}
if (move > 0 && !facingRight)
Flip ();
else if (move < 0 && facingRight)
Flip ();
if (Input.GetKeyDown (KeyCode.Return)) {
Instantiate (ninjaStar, firePoint.position, firePoint.rotation);
shotDelayCounter = shotDelay;
}
if (Input.GetKey (KeyCode.Return)) {
shotDelayCounter -= Time.deltaTime;
if (shotDelayCounter <= 0)
{
shotDelayCounter = shotDelay;
Instantiate (ninjaStar, firePoint.position, firePoint.rotation);
}
}
if (anim.GetBool("sword"))
anim.SetBool("sword", false);
if(Input.GetKey(KeyCode.H))
{
anim.SetBool("sword", true);
}
}
public void Move(float moveInput)
{
float move = moveInput;
}
void Update()
{
if ((grounded || !doubleJump) && Input.GetKeyDown (KeyCode.Space)) {
anim.SetBool ("Ground", false);
GetComponent<Rigidbody2D> ().AddForce (new Vector2 (0, jumpForce));
if (!doubleJump && !grounded)
doubleJump = true;
}
}
void Flip()
{
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
Thanks, Tom
Your answer
Follow this Question
Related Questions
Unity 3D UI Button Not Working When Touched (Mobile)? 1 Answer
How can I move my 2D car in 16 fixed angles like in Retro City Rampage 1 Answer
Unity 2d android game How to "freeze" position on Y axis 1 Answer
With the new unity input system. How do I setup UI buttons like in the old system. 0 Answers
Input/Animation works fine in Play (Editor) but not in the build 0 Answers