- Home /
Question by
Er Muyayo Olivier · May 09, 2015 at 03:13 PM ·
a
NullReferenceException: Object reference not set to an instance of an object NewBehaviourScript.Update () (at Assets/Scripts/NewBehaviourScript.js:33)
I'm trying to do a Drag and Drop object but Unity give me this error:
NullReferenceException: Object reference not set to an instance of an object NewBehaviourScript.Update () (at Assets/Scripts/NewBehaviourScript.js:33)
#pragma strict
/*
Este Script Controla el movimiento de un GameObject mediante el sistema Drag & Drop
Lo hace tanto para IPhone y Android como para PC
*/
private var hit : RaycastHit;
private var GameObjectSeleccionado : GameObject;
private var screenPoint : Vector3;
function Update () {
#if !UNITY_EDITOR && (UNITY_IPHONE || UNITY_ANDROID)
if(Input.touchCount > 0){
if(Input.GetTouch(0).phase == TouchPhase.Began){
var ray = Camera.main.ScreenPointToRay (Input.GetTouch(0).position);
if(Physics.Raycast (ray, hit, 1000000)){
if(hit.collider.gameObject.name == "Drag"){
GameObjectSeleccionado = hit.collider.gameObject;
screenPoint = Camera.main.WorldToScreenPoint(GameObjectSeleccionado.transform.position);
}
}
}else if(Input.GetTouch(0).phase == TouchPhase.Moved){
GameObjectSeleccionado.transform.position = Camera.main.ScreenToWorldPoint(Vector3(Input.GetTouch(0).position.x,Input.GetTouch(0).position.y, screenPoint.z));
}else if(Input.GetTouch(0).phase == TouchPhase.Ended){
GameObjectSeleccionado = null;
}
}
#else
if(Input.GetKeyDown(KeyCode.Mouse0)){
var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if(Physics.Raycast (ray, hit, 1000000)){
if(hit.collider.gameObject.name == "Drag"){
GameObjectSeleccionado = hit.collider.gameObject;
screenPoint = Camera.main.WorldToScreenPoint(GameObjectSeleccionado.transform.position);
}
}
}else if(Input.GetKey(KeyCode.Mouse0)){
if(GameObjectSeleccionado != null){
GameObjectSeleccionado.transform.position = Camera.main.ScreenToWorldPoint(Vector3(Input.mousePosition.x,Input.mousePosition.y, screenPoint.z));
}
}else if(Input.GetKeyUp(KeyCode.Mouse0)){
GameObjectSeleccionado = null;
}
#endif
}
Comment
Answer by Basen · May 09, 2015 at 03:37 PM
Did you attach this to the camera? My drag and drop(for 2d, 5 touches Max) looks like this:
RaycastHit2D[] hit = new RaycastHit2D[5];
GameObject[] hits = new GameObject[5];
void Update ()
{
if(Input.touchCount > 0)
{
foreach(Touch t in Input.touches)
{
if(Input.GetTouch(t.fingerId).phase == TouchPhase.Began)
hit[t.fingerId] = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.GetTouch(t.fingerId).position), Vector2.zero);
if(hit[t.fingerId].collider.name == "Tri(Clone)" && Input.GetTouch(t.fingerId).phase == TouchPhase.Moved)
{
hits[t.fingerId] = hit[t.fingerId].transform.gameObject;
hits[t.fingerId].transform.position = new Vector3(Camera.main.ScreenToWorldPoint(Input.GetTouch(t.fingerId).position).x,Camera.main.ScreenToWorldPoint(Input.GetTouch(t.fingerId).position).y,0f);
}
}
}
}
}