- Home /
touch control code optimization
hi, i have a super simple scene 7 boxes , 1 sphere and all have mobile / unlit shader , no light in scene.
here is my script for controlling a sphere.
using UnityEngine;
using System.Collections;
public class PlayerControllerTouch : MonoBehaviour {
public float speed;
void Update() {
if (Input.touchCount > 0){
transform.localScale += new Vector3 (0.0f, 0.0f, 0.0f);
}else {
transform.localScale += new Vector3 (0.0035f, 0.0f, 0.0035f);
}
if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) {
Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition;
transform.Translate(touchDeltaPosition.x * speed,0,touchDeltaPosition.y * speed);
}
}
}
from a ortograhpic camera from top i'm controlling a sphere with my touch , this simple scene is not smooth on htc m7 , galaxsy note3 even note 4, i have htc m8 and game flows very smooth.
all i'm doing with script if i stop touching screen i start scaling the sphere and move sphere with touch.
any idea that cause lag? thank you.
Answer by Xarbrough · Jul 01, 2015 at 11:34 PM
Yes, you should multiply your deltaPosition by Time.deltaTime to make it framerate independent. The same goes for the scale. Right now you're scaling and transforming a certain amount per frame. Of course, if the framerate jitters, the whole movement will look jittery. Multiplying by Time.deltaTime will give you framerate independent transformation, but you will need to increase your speed/amount a lot.
Your answer
Follow this Question
Related Questions
Touch Delay / Lag in Movement only on iOS Device 0 Answers
transform.rotation = ... reacts slow 2 Answers
Semaphore.WaitForSignal is causing so much lag on Android!!! Help!!! 1 Answer
Trying to get the player to face the direction of a touch 1 Answer
How could I implement diagonal movement in this code? 0 Answers