- Home /
Touch Control for 2D Game
I want to adding touch control for my 2D game, but my code is not work properly.
I want to drag my player in both x and y axis via touching and dragging finger.
Touching on player is not necessery.
Basically, from anywhere that you began to touch, this is firstPosition and anywhere that you left your finger is the endPosition. So, movement direction may be like this:
movementDirection= endPosition - firstPosition;
Current problems:
1. Player is not move properly.
2. Player is vibrating, if my finger is touching and not moving. 3. If I left my finger, player is keeping moving towards last direction.
My current code is below:
void FixedUpdate()
{
Vector2 movement;
if (Input.touchCount > 0) //if any finger are on the screen
{
Touch touch = Input.touches[0];
if (touch.phase == TouchPhase.Began)
{
//Rect rect = new Rect(0, 0, 150, 150); //rect of your thing that you want to catch
//if (rect.Contains(touch.position))
thingIsCaptured = true;
}
if (touch.phase == TouchPhase.Moved)
{
if (thingIsCaptured)
{
movement = touch.deltaPosition.normalized;
rb.velocity = movement * playerSpeed;
}
else
{
rb.velocity = Vector2.zero;
rb.angularVelocity = 0;
}
}
if (touch.phase == TouchPhase.Ended)
{
thingIsCaptured = false;
}
}
rb.position = new Vector2
(
Mathf.Clamp(rb.position.x, boundary.xMin + 0.02f * playerSpeed, boundary.xMax - 0.02f * playerSpeed),
Mathf.Clamp(rb.position.y, boundary.yMin + 0.02f * playerSpeed, boundary.yMax - 0.02f * playerSpeed)
);
}
Your answer
Follow this Question
Related Questions
Using Input.touchCount as a button 0 Answers
Differentiate swipe from tap android 0 Answers
Reduce Mobile Single Stick Control player movement Speed 0 Answers
Buttons touchscreen movement bug 1 Answer
Touch screen move - android 1 Answer