please tell me why this script does not move the object without delay??
using UnityEngine;
using System.Collections;
public class MoveObjectAsTouch : MonoBehaviour
{
public string MovableObjectTag; //Disk
private Transform _myTransform;
private string _currentState;
private Ray _ray;
private RaycastHit _hit;
private bool _rightObject;
private Vector3 _initialPos;
private Vector3 screenPos;
private Vector3 offset;
private Vector3 currentScreenPos;
private Vector3 currentPos;
private Vector3 F1;
private Vector3 F2;
private Vector3 M;
void Start()
{
_myTransform = transform;
}
void OnGUI()
{
GUI.Label(new Rect(10, 10, 100, 30), _currentState);
}
void FixedUpdate()
{
if (iPhoneInput.touchCount == 1)
{
Touch firstTouch = Input.GetTouch(0);
Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
RaycastHit hit;
if (Physics.Raycast (ray, out hit, 100))
{
if(hit.collider.tag == MovableObjectTag)
{
if (firstTouch.phase == TouchPhase.Began)
{
_currentState = "Touch's began";
screenPos = Camera.main.WorldToScreenPoint(_myTransform.position);
offset = _myTransform.position - Camera.main.ScreenToWorldPoint(new Vector3(firstTouch.position.x,firstTouch.position.y,screenPos.z));
}
else if(firstTouch.phase == TouchPhase.Moved)
{
_currentState = "Touch's Moved";
currentScreenPos = new Vector3(firstTouch.position.x, firstTouch.position.y, screenPos.z); // firstTouch.position.y
currentPos = Camera.main.ScreenToWorldPoint(currentScreenPos) + offset;
_myTransform.position = currentPos;
}
else if(firstTouch.phase == TouchPhase.Ended)
{
_currentState = "Touch's Ended";
}
}
}
}
}
}