Bird
Raised Fist0
Unityframework~10 mins

Touch input basics in Unity - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to check if the screen is touched.

Unity
if (Input.[1] > 0) {
    Debug.Log("Screen touched");
}
Drag options to blanks, or click blank then click option'
AtouchPhase
Btouches
CtouchCount
DtouchPosition
Attempts:
3 left
💡 Hint
Common Mistakes
Using Input.touches instead of Input.touchCount
Using Input.touchPhase which is not a property of Input
2fill in blank
medium

Complete the code to get the position of the first touch on the screen.

Unity
Vector2 touchPos = Input.touches[[1]].position;
Drag options to blanks, or click blank then click option'
A0
B1
C-1
DtouchCount
Attempts:
3 left
💡 Hint
Common Mistakes
Using 1 instead of 0 as index
Using touchCount as index which is out of range
3fill in blank
hard

Fix the error in the code to detect if the first touch just began.

Unity
if (Input.touches[0].[1] == TouchPhase.Began) {
    Debug.Log("Touch started");
}
Drag options to blanks, or click blank then click option'
AtouchCount
Bphase
CdeltaPosition
Dposition
Attempts:
3 left
💡 Hint
Common Mistakes
Using position instead of phase
Using touchCount which is not a property of Touch
4fill in blank
hard

Fill both blanks to create a dictionary mapping fingerId to touch position for all touches.

Unity
var touchPositions = new Dictionary<int, Vector2>();
for (int i = 0; i < Input.touchCount; i++) {
    var touch = Input.touches[i];
    touchPositions[touch.[1]] = touch.[2];
}
Drag options to blanks, or click blank then click option'
AfingerId
Bposition
Cphase
DdeltaPosition
Attempts:
3 left
💡 Hint
Common Mistakes
Using phase or deltaPosition instead of position
Using touchCount instead of fingerId
5fill in blank
hard

Fill all three blanks to detect a swipe by checking if the touch moved more than 50 pixels.

Unity
if (Input.touchCount > 0) {
    Touch touch = Input.touches[[1]];
    if (touch.phase == TouchPhase.[2]) {
        if (touch.[3].magnitude > 50) {
            Debug.Log("Swipe detected");
        }
    }
}
Drag options to blanks, or click blank then click option'
A0
BMoved
CdeltaPosition
DBegan
Attempts:
3 left
💡 Hint
Common Mistakes
Using phase Began instead of Moved
Using position instead of deltaPosition
Using wrong touch index

Practice

(1/5)
1. Which Unity property tells you how many fingers are currently touching the screen?
easy
A. Input.touchPhase
B. Input.touchCount
C. Input.GetTouchCount()
D. Input.touchPosition

Solution

  1. Step 1: Understand the purpose of Input.touchCount

    This property returns the number of fingers currently touching the screen in Unity.
  2. Step 2: Compare with other options

    Input.touchPhase is not a property but an enum for touch state; Input.GetTouchCount() does not exist; Input.touchPosition gives position, not count.
  3. Final Answer:

    Input.touchCount -> Option B
  4. Quick Check:

    Number of touches = Input.touchCount [OK]
Hint: Remember: touchCount counts fingers on screen [OK]
Common Mistakes:
  • Confusing touchCount with touchPhase
  • Using non-existent methods like GetTouchCount()
  • Mixing position with count
2. Which of the following is the correct way to get the first touch input in Unity?
easy
A. Input.touch(0)
B. Input.GetTouchCount(0)
C. Input.GetTouch(0)
D. Input.touchCount(0)

Solution

  1. Step 1: Recall the method to access touches

    Unity uses Input.GetTouch(index) to get a touch at a specific index.
  2. Step 2: Check syntax correctness

    Input.touch(0) and Input.touchCount(0) are invalid; GetTouchCount(0) does not exist.
  3. Final Answer:

    Input.GetTouch(0) -> Option C
  4. Quick Check:

    First touch = Input.GetTouch(0) [OK]
Hint: Use GetTouch(index) to access specific touch [OK]
Common Mistakes:
  • Using touch as a method instead of GetTouch
  • Trying to call touchCount as a method
  • Confusing method names
3. What will be the output of this code snippet if the user just started touching the screen?
if (Input.touchCount > 0) {
    Touch touch = Input.GetTouch(0);
    if (touch.phase == TouchPhase.Began) {
        Debug.Log("Touch started");
    }
}
medium
A. Touch ended
B. Touch moved
C. No output
D. Touch started

Solution

  1. Step 1: Understand the touch.phase check

    The code checks if the first touch's phase is TouchPhase.Began, which means the touch just started.
  2. Step 2: Match the condition with output

    If the user just started touching, the condition is true and "Touch started" is logged.
  3. Final Answer:

    Touch started -> Option D
  4. Quick Check:

    touch.phase == Began means "Touch started" [OK]
Hint: TouchPhase.Began means finger just touched screen [OK]
Common Mistakes:
  • Confusing Began with Moved or Ended
  • Ignoring touchCount check
  • Assuming output without touch
4. Identify the error in this Unity C# code snippet for detecting a touch:
if (Input.touchCount > 0) {
    Touch touch = Input.GetTouch(0);
    if (touch.phase = TouchPhase.Began) {
        Debug.Log("Touch started");
    }
}
medium
A. Using assignment (=) instead of comparison (==) in if condition
B. Incorrect method name GetTouch instead of GetTouches
C. Missing check for touchCount == 1
D. TouchPhase.Began is not a valid enum

Solution

  1. Step 1: Check the if condition syntax

    The condition uses a single equals sign (=), which assigns instead of compares.
  2. Step 2: Understand correct comparison operator

    To compare values, double equals (==) must be used in C#.
  3. Final Answer:

    Using assignment (=) instead of comparison (==) in if condition -> Option A
  4. Quick Check:

    Use == to compare, not = [OK]
Hint: Use == for comparison, = is assignment [OK]
Common Mistakes:
  • Using = instead of == in conditions
  • Thinking GetTouch is wrong method
  • Unnecessary touchCount == 1 check
  • Misunderstanding TouchPhase enum
5. You want to detect when the user moves their finger on the screen and print the new position. Which code snippet correctly does this inside Update()?
hard
A.
if (Input.touchCount > 0) {
    Touch touch = Input.GetTouch(0);
    if (touch.phase == TouchPhase.Moved) {
        Debug.Log($"Moved to: {touch.position}");
    }
}
B.
if (Input.touchCount > 0) {
    Touch touch = Input.GetTouch(0);
    if (touch.phase == TouchPhase.Ended) {
        Debug.Log($"Moved to: {touch.position}");
    }
}
C.
if (Input.touchCount == 0) {
    Touch touch = Input.GetTouch(0);
    Debug.Log($"Moved to: {touch.position}");
}
D.
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Moved) {
    Debug.Log($"Moved to: {touch.position}");
}

Solution

  1. Step 1: Check for active touches

    We must ensure Input.touchCount > 0 before accessing touches to avoid errors.
  2. Step 2: Detect the move phase and print position

    Using touch.phase == TouchPhase.Moved correctly detects finger movement and prints the position.
  3. Final Answer:

    Code snippet D correctly detects movement and prints position -> Option A
  4. Quick Check:

    Check touchCount > 0 and phase == Moved [OK]
Hint: Always check touchCount > 0 before GetTouch [OK]
Common Mistakes:
  • Checking phase == Ended instead of Moved
  • Accessing GetTouch(0) when touchCount == 0
  • Not checking touchCount before GetTouch
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard