ArcRotateCamera on Mobile

Hi @jose_ignacio,

I had a similar question a week ago for my game, where the Camera movement responded way too fast to Input (touch, pinch, etc.) for the User to be good UX. And I got to solve it in my case, so here is the solution.

Input sensitivity properties
The Camera sensitivity of responding to Inputs (such as Pointers and Touches) are settings found within the various CameraInputs found on the CameraInputsManager of the Camera. Look for properties like ‘sensitivity’ and ‘pinch’ in the API:

https://doc.babylonjs.com/api/classes/babylon.arcrotatecamera
https://doc.babylonjs.com/api/classes/babylon.arcrotatecamerainputsmanager
https://doc.babylonjs.com/api/interfaces/babylon.icamerainput

If you don’t find the default CameraInputs (and their properties) of use for your case, you can even create and use your own CameraInputs on the Camera. How to do that is quite well explained in the docs:

https://doc.babylonjs.com/how_to/customizing_camera_inputs

Code sample
Here’s a code snippet example from my game, which is for the default CameraInputs on the FollowCamera (variable named controlledCamera below), but for ArcRotateCamera likewise properties may be found in the API URL’s I have shared above. So you need to set the ones mentioned in those docs for ArcRotateCamera:

	// Keyboard
	if (controlledCamera.inputs.attached['keyboard'])
	{
		controlledCamera.inputs.attached.keyboard.keysRadiusModifierAlt = false;
		controlledCamera.inputs.attached.keyboard.keysHeightOffsetModifierShift = true;
		controlledCamera.inputs.attached.keyboard.heightSensibility = 1/10; // default: 1 (lower is slower)
		controlledCamera.inputs.attached.keyboard.radiusSensibility = 1/10; // default: 1 (lower is slower)
		//controlledCamera.inputs.attached.keyboard.rotationSensibility = 1; // default: 1 (lower is slower)
	}

	// Mousewheel
	if (controlledCamera.inputs.attached['mousewheel'])
	{
		//controlledCamera.inputs.attached.mousewheel.wheelDeltaPercentage = 0; // default: 0
		//controlledCamera.inputs.attached.mousewheel.wheelPrecision = 3; // default: 3
	}

	// Pointers
	if (controlledCamera.inputs.attached['pointers'])
	{
		controlledCamera.inputs.attached.pointers.angularSensibilityX = 10/2; // default: 1 (higher is slower)
		controlledCamera.inputs.attached.pointers.angularSensibilityY = 2*10; // default: 1 (higher is slower)
		//controlledCamera.inputs.attached.pointers.pinchDeltaPercentage = 0; // default: 0
		//controlledCamera.inputs.attached.pointers.pinchPrecision = 10000;
	}

Let me know if and how you solved your ArcRotateCamera case with my answer.

Q