Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

Question Why is 3D mobile game lagging after touching the screen?

Discussion in 'Input System' started by mikolajmichalczak, May 27, 2023.

  1. mikolajmichalczak


    Mar 3, 2023
    Hi, I am creating a 3D mobile game in Unity where a ball rolls, and the user stops moving platforms by touching the screen.
    The problem is that the game lags for a while after about 0.5 seconds every time the screen is touched, but it runs smoothly without any touch input.
    Initially, I thought of checking the methods related to touch input, but even after commenting them out, the problem persists. I am wondering how it is possible for the game to still lag after a touch when there is no relevant code related to it.
    The game is relatively simple at the moment, without any textures. The main logic involves moving the ball, camera, and platforms, spawning platforms in front of the ball, and destroying objects behind it using Prefabs.

    Some technical details:
    • I am using Xiaomi Mi 10T for testing.

    • The lag is slightly reduced when manually setting the target frame rate to 60 using Application.targetFrameRate = 60;.

    • I have performed some optimization for mobile devices.

    • Here is the function for moving the ball:
    Code (CSharp):
    2. void FixedUpdate() {
    3.    if (!isBallStopped)
    4.    {
    5.       var forwardMove = transform.forward * (speed * Time.fixedDeltaTime);
    6.       rb.MovePosition(rb.position + forwardMove);
    7.    }
    8. }
    • Here is the function for moving platforms:
    Code (CSharp):
    2. void FixedUpdate() {
    3.    if (!platformTile.isMoving) return;
    4.    if (Vector3.Distance(transform.position, waypoints[currentWaypointIndex].transform.position) < .1f)
    5.    {      
    6.       currentWaypointIndex++;
    7.       if (currentWaypointIndex >= waypoints.Length) {
    8.          currentWaypointIndex = 0;
    9.       }
    10.    }
    11.    transform.position = Vector3.MoveTowards(transform.position, waypoints[currentWaypointIndex].transform.position, speed * Time.fixedDeltaTime);
    12. }