Gameloft FPS swipe to look control

So I’m trying to get a gameloft fps style swipe to look control, I’ve tried a couple of different methods but most of them are really jittery, but when smoothed are extremely inaccurate. Anyone know how to accomplish this? I tried the warehouse demo one, but it to is to jittery, so I tried to smooth out the mouselookiphone but then it just seems really inacurrate. Help???

No one has worked on something like this?

How are you interpreting the swipe gesture and how are you carrying out the smoothing? (Code snippets would be useful if possible.)

Ok currently this is my code for getting the swiping, it then translates the swipes into Input for MouseLookiPhone, here it is. Before I had it stop on TouchPhase.Ended, but that didn’t work for quick swipes. What I believe would fix my problem is if I could somehow check my cameras rotation against where it should have rotated with the swipe, and if the player didn’t swipe again, then the camera would stop moving. I just don’t know how I would put that in code. Also right now I don’t have any smoothing as of yet because my previous attempts made it lag behind and stuff (made it feel really inaccurate).

var Look : MouseLookiPhone;
var tPos : Vector2;
var done : boolean = true;

function Update () {
SwipeToLook();
Look.SetInput(tPos);
Look.CustomUpdate();
}

function SwipeToLook(){

	for (var i=0; i < iPhoneInput.touchCount; i++){
		var touch : iPhoneTouch = iPhoneInput.touches[i];
        if(touch.phase == iPhoneTouchPhase.Moved){
        done = false;
        tPos = touch.deltaPosition;
        Debug.Log(tPos.x);
        }
        if(done){
        tPos = Vector2.zero;
        }
    } 
}

Any solution on this, I got this to work with my project in Unity 3.4.2 but it’s so jittery. It runs perfectly in the old Unity iPhone, but with Unity 3 it’s way too jittery.

Here is the Unity script:

it gets “SetInput (touch.deltaPosition);” from the iPhone analog script. This is the typical scripts from the demos, but way too jittery!

using UnityEngine;
using System.Collections;

/// MouseLook rotates the transform based on the mouse delta.
/// Minimum and Maximum values can be used to constrain the possible rotation

/// To make an FPS style character:
/// - Create a capsule.
/// - Add a rigid body to the capsule
/// - Add the MouseLook script to the capsule.
///   -> Set the mouse look to use LookX. (You want to only turn character but not tilt it)
/// - Add FPSWalker script to the capsule

/// - Create a camera. Make the camera a child of the capsule. Reset it's transform.
/// - Add a MouseLook script to the camera.
///   -> Set the mouse look to use LookY. (You want the camera to tilt up and down like a head. The character already turns.)
[AddComponentMenu("Camera-Control/Mouse Look")]
public class MouseLookiPhone : MonoBehaviour {

	public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
	public RotationAxes axes = RotationAxes.MouseXAndY;
	public float sensitivityX = 15F;
	public float sensitivityY = 15F;
//	private int index;
//	private int Invert;
	public float minimumX = -360F;
	public float maximumX = 360F;

	public float minimumY = -60F;
	public float maximumY = 60F;

	float rotationX = 0F;
	float rotationY = 0F;
	
	private float inputX = 0F;
	private float inputY = 0F;
	
	
	Quaternion originalRotation;

	public void CustomUpdate ()
	{
		if (axes == RotationAxes.MouseXAndY)
		{
			// Read the mouse input axis
			rotationX += inputX * sensitivityX;
			rotationY += inputY * sensitivityY;

			rotationX = ClampAngle (rotationX, minimumX, maximumX);
			rotationY = ClampAngle (rotationY, minimumY, maximumY);
			
			Quaternion xQuaternion = Quaternion.AngleAxis (rotationX, Vector3.up);
			Quaternion yQuaternion = Quaternion.AngleAxis (rotationY, Vector3.left);
			
			transform.localRotation = originalRotation * xQuaternion * yQuaternion;
		}
		else if (axes == RotationAxes.MouseX)
		{
			rotationX += inputX * sensitivityX;
			rotationX = ClampAngle (rotationX, minimumX, maximumX);

			Quaternion xQuaternion = Quaternion.AngleAxis (rotationX, Vector3.up);
			transform.localRotation = originalRotation * xQuaternion;
		}
		else
		{
			rotationY += inputY * sensitivityY;
			rotationY = ClampAngle (rotationY, minimumY, maximumY);

			Quaternion yQuaternion = Quaternion.AngleAxis (rotationY, Vector3.left);
			transform.localRotation = originalRotation * yQuaternion;
		}
	}
	
	void Start ()
	{
		// Make the rigid body not change rotation
		originalRotation = transform.localRotation;
//		index = PlayerPrefs.GetInt("MoveSens");
//		Invert = PlayerPrefs.GetInt("Invert");
//		sensitivityX = index;
//		sensitivityY = index;
	}
	
	public static float ClampAngle (float angle, float min, float max)
	{
		if (angle < -360F)
			angle += 360F;
		if (angle > 360F)
			angle -= 360F;
		return Mathf.Clamp (angle, min, max);
	}
	
	public void SetInput (Vector2 rightStickInput)
	{
		Debug.Log (rightStickInput);
		inputX = rightStickInput.x * 0.1F;
	//	if (Invert==0)
		inputY = rightStickInput.y * 0.1F;
	//	if (Invert==1)
	//	inputY = rightStickInput.y * -0.1F;
	}
}

got it solved with this:

using UnityEngine;
using System.Collections;

/// MouseLook rotates the transform based on the mouse delta.
/// Minimum and Maximum values can be used to constrain the possible rotation

/// To make an FPS style character:
/// - Create a capsule.
/// - Add a rigid body to the capsule
/// - Add the MouseLook script to the capsule.
///   -> Set the mouse look to use LookX. (You want to only turn character but not tilt it)
/// - Add FPSWalker script to the capsule

/// - Create a camera. Make the camera a child of the capsule. Reset it's transform.
/// - Add a MouseLook script to the camera.
///   -> Set the mouse look to use LookY. (You want the camera to tilt up and down like a head. The character already turns.)
[AddComponentMenu("Camera-Control/Mouse Look")]
public class MouseLookiPhone : MonoBehaviour {

	public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
	public RotationAxes axes = RotationAxes.MouseXAndY;
	public float sensitivityX = 15F;
	public float sensitivityY = 15F;
	private float index1;
		private float index2;
	public int Invert;
	public float minimumX = -360F;
	public float maximumX = 360F;

	public float minimumY = -60F;
	public float maximumY = 60F;

	public float rotationX = 0F;
	 float rotationY = 0F;
	
	public float smoothing = 2F;
	
	private float inputX = 0F;
	private float inputY = 0F;
	
	private Transform thisXform;
	
	public void CustomUpdate ()
	{
		
		if (axes == RotationAxes.MouseX)
		{
			rotationX += inputX * sensitivityX;
			rotationX = ClampAngle (rotationX, minimumX, maximumX);

			thisXform.localRotation=Quaternion.Lerp(thisXform.localRotation,Quaternion.Euler(0,rotationX,0),Time.deltaTime*10/smoothing);
		}
		else
		{
			rotationY += inputY * sensitivityY;
			rotationY = ClampAngle (rotationY, minimumY, maximumY);
			
			thisXform.localRotation=Quaternion.Lerp(thisXform.localRotation,Quaternion.Euler(rotationY,0,0),Time.deltaTime*10/smoothing);
			
		}
	}
	
	void Awake () {
		
		thisXform = transform;
		
		index1 = PlayerPrefs.GetFloat("MoveSensX");
		index2 = PlayerPrefs.GetFloat("MoveSensY");
		Invert = PlayerPrefs.GetInt("Invert");
		sensitivityX = index1;
		sensitivityY = index2;
		
	}
	
	public static float ClampAngle (float angle, float min, float max)
	{
		if (angle < -360F)
			angle += 360F;
		if (angle > 360F)
			angle -= 360F;
		return Mathf.Clamp (angle, min, max);
	}
	
	public void SetInput (Vector2 rightStickInput)
	{

		inputX = rightStickInput.x * 0.1F;
		if (Invert==0)
		inputY = rightStickInput.y * -0.1F;
		if (Invert==1)
		inputY = rightStickInput.y * 0.1F;
		
		CustomUpdate ();
			
	}
	
	
}

I’m having the Right Joystick script from the Standard assets send SetInput (touch.deltaPosition); to this script.