Technicat posted this code a while back.
function Update () {
var hit : RaycastHit;
for (var i = 0; i < Input.touchCount; ++i) {
if (Input.GetTouch(i).phase == TouchPhase.Began) {
// Construct a ray from the current touch coordinates
var ray = camera.ScreenPointToRay (Input.GetTouch(i).position);
if (Physics.Raycast (ray,hit,1000)) {
hit.transform.gameObject.SendMessage("OnMouseDown");
}
}
}
}
It works great, but I need OnMouseUp() to work as well. I’ve tried and failed.
It took me way too long to figure this out.
private var thisTransform : Transform;
var tmpobj : Transform;
function Start()
{
thisTransform = transform;
}
function Update ()
{
var hit : RaycastHit;
for (var i = 0; i < Input.touchCount; ++i)
{
if (Input.GetTouch(i).phase == TouchPhase.Began)
{
// Construct a ray from the current touch coordinates
var ray = camera.ScreenPointToRay (Input.GetTouch(i).position);
if (Physics.Raycast (ray,hit,1000))
{
hit.transform.gameObject.SendMessage("OnMouseDown");
tmpobj = hit.transform;
}
}
else if(Input.GetTouch(i).phase == TouchPhase.Ended)
{
tmpobj.SendMessage("OnMouseUp");
}
}
}