Hey guys, I’m trying to write a script for creating multiple objects of Vuforia image target at real time, and manage movements of those cloned objects.
But I got these error
Exception in callback: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> System.NullReferenceException: Object reference not set to an instance of an object
at (wrapper stelemref) object:stelemref (object,intptr,object)
at test.OnTrackingFound () [0x0006f] in C:\test.cs:74
at test.OnTrackableStateChanged (Status previousStatus, Status newStatus) [0x0001f] in C:\test.cs:57
at Vuforia.TrackableBehaviour.OnTrackerUpdate (Status newStatus) [0x00000] in :0
at Vuforia.DataSetTrackableBehaviour.OnTrackerUpdate (Status newStatus) [0x00000] in :0
at Vuforia.VuforiaExtendedTrackingManager.ApplyTrackingState (Vuforia.TrackableBehaviour trackableBehaviour, Status vuforiaStatus,
I tried to make 1 Model Transform array and spawn multiple objects with for loop but it gave the same problem.
Is there something wrong related to Vuforia or?
Big thanks for everyone.
using UnityEngine;
using System.Collections;
using Vuforia;
public class test : MonoBehaviour, ITrackableEventHandler
{
private TrackableBehaviour mTrackableBehaviour;
public Transform myModelPrefab;
private Transform myModelTrf;
private GameObject[] myModelTrf1;
public GameObject[] pointers;
public bool created = false;
public float speed;
private int count = 0;
// Use this for initialization
void Start()
{
mTrackableBehaviour = GetComponent<TrackableBehaviour>();
if (mTrackableBehaviour)
{
mTrackableBehaviour.RegisterTrackableEventHandler(this);
}
}
// Update is called once per frame
void Update()
{
float step = speed * Time.deltaTime;
float rotateTime = step * 2;
if (created == true)
{
for (int i = 0; i < pointers.Length; i++)
{
myModelTrf1[i].transform.position = Vector3.MoveTowards(myModelTrf1[i].transform.position, pointers[i].transform.localPosition, step);
myModelTrf1[i].transform.rotation = Quaternion.Slerp(myModelTrf1[i].transform.rotation, pointers[i].transform.localRotation, rotateTime);
}
created = false;
}
}
public void OnTrackableStateChanged(
TrackableBehaviour.Status previousStatus,
TrackableBehaviour.Status newStatus)
{
if (newStatus == TrackableBehaviour.Status.DETECTED ||
newStatus == TrackableBehaviour.Status.TRACKED)
{
if (count < 40)
{
OnTrackingFound();
count++;
}
}
}
private void OnTrackingFound()
{
if (myModelPrefab != null)
{
Transform myModelTrf = GameObject.Instantiate(myModelPrefab) as Transform;
myModelTrf.parent = mTrackableBehaviour.transform;
myModelTrf.localPosition = new Vector3(0f, 0f, 0f);
myModelTrf.localRotation = Quaternion.identity;
myModelTrf.localScale = new Vector3(0.0005f, 0.0005f, 0.0005f);
myModelTrf1[count] = myModelTrf.gameObject;
myModelTrf1[count].SetActive(true);
}
}
}