- Home /
Change from Input.GetKeyDown to Input.GetTouch
Hello,
Super simple question.
At the moment I make my character jump using:
if (grounded && Input.GetKeyDown (KeyCode.Space)) { rigidbody2D.AddForce(new Vector2(0,jumpForce)); }
I want to change this to work on a touch screen.
I would like to make it so the character will jump when the user taps anywhere on the screen.
Answer by Slobdell · Aug 08, 2014 at 02:11 AM
I'm not sure there's a question in there but, but get touch will work for touches. I use Input.GetMouseButtonDown(0) This will work for mouse clicks in the editor and will also work with touches on a device. Don't have to write separate code for touchscreen device and editor unless you are doing something more complex with the touches other than what it looks like
Answer by Masterben135 · Aug 08, 2014 at 02:13 AM
if(Input.GetTouch(0).phase == TouchPhase.Began)
{
//jump
}
Answer by atulvi · Aug 12, 2021 at 07:40 PM
May be helpfull
1) create script. for example player.cs
public class PlayerController : MonoBehaviour
{
bool swipeRight = false;
bool swipeLeft = false;
bool touchBlock = true;
bool canTouchRight = true;
bool canTouchLeft = true;
void Update()
{
swipeLeft = Input.GetKeyDown("a") || Input.GetKeyDown(KeyCode.LeftArrow);
swipeRight = Input.GetKeyDown("d") || Input.GetKeyDown(KeyCode.RightArrow);
TouchControl();
if(swipeRight) //rightMove logic
else if(swipeLeft) //leftMove logic
}
void TouchControl()
{
if(Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Began )
{
//Jump logic
}
else if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved && touchBlock == true)
{
touchBlock = false;
// Get movement of the finger since last frame
var touchDeltaPosition = Input.GetTouch(0).deltaPosition;
Debug.Log("touchDeltaPosition "+touchDeltaPosition);
if(touchDeltaPosition.x > 0 && canTouchRight == true)
{
//rightMove
swipeRight = true; canTouchRight = false;
Invoke("DisableSwipeRight",0.2f);
}
else if(touchDeltaPosition.x < 0 && canTouchLeft == true)
{
//leftMove
swipeLeft = true; canTouchLeft = false;
Invoke("DisableSwipeLeft",0.2f);
}
}
}
void DisableSwipeLeft()
{
swipeLeft = false;
touchBlock = true;
canTouchLeft = true;
}
void DisableSwipeRight()
{
swipeRight = false;
touchBlock = true;
canTouchRight = true;
}
}
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Enemy moving in a random direction 1 Answer
I can't change a variable that is in another script. 1 Answer
Mouse orbit on a touchscreen 2 Answers