I am trying to move my player based on relative drag . Here is my script :
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
public class playerInput : MonoBehaviour , IPointerDownHandler,IDragHandler,IPointerUpHandler
{
private Vector3 startPos;
private Vector3 curPos;
GameObject player;
void Start(){
player = GameObject.FindWithTag ("Player");
}
void Update()
{
}
#region IPointerDownHandler implementation
public void OnPointerDown (PointerEventData eventData)
{
startPos = Camera.main.ScreenToWorldPoint (eventData.position);
}
#endregion
#region IDragHandler implementation
public void OnDrag (PointerEventData eventData)
{
curPos = Camera.main.ScreenToWorldPoint (eventData.position) - startPos;
player.transform.position = (player.transform.position + curPos)/2;
}
#endregion
#region IPointerUpHandler implementation
public void OnPointerUp (PointerEventData eventData)
{
}
#endregion
}
It works fine , but during initial drag it snaps to off location , after that the movement is responsive and nice . If i do
player.transform.position += curPos/40;
instead of
player.transform.position = (player.transform.position + curPos)/2;
Then it wont snap and will fine , will move relative to my finger etc but the movement is sluggish and slow . If i dont divide curPos by 40
then the character moves too fast . Not sure what to do , any help is appreciated .