当为 Vuforia+Unity 检测到图像时启动 C# 脚本

Start C# script when image is detected for Vuforia+Unity

我写了一个脚本,比如说在 C# 中将一个球体旋转到中心。但是,脚本甚至在检测到图像目标之前就开始了,当我将图像目标放在相机前面时,脚本已经执行了。

我了解到需要为此修改 DefaultTrackableBehaviour 脚本。我看到一些视频展示了如何在检测到图像目标时启动音频,但是如何在检测到图像目标时启动脚本。

这是对象的层次结构

这是我只想在检测到图像目标时为球体执行的脚本。执行时球体将旋转到中心 (0,0,0)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class spiralanti : MonoBehaviour
{
    float angles;
    float radiuss;
    float angleSpeed;
    float rSpeed;
    // Start is called before the first frame update
    void Start()
    {
        angles = 0;
        radiuss = 1f;
        angleSpeed = 250f;
        rSpeed = 0.05f;
        angles = Mathf.Max(0, Mathf.PI);
        radiuss = Mathf.Max(0, radiuss);

        //float x = 0;
        // float y = 0;
        // float z = 0;
    }

    // Update is called once per frame
    void Update()
    {
        angles += Time.deltaTime * angleSpeed;
        radiuss -= Time.deltaTime * rSpeed;
        if (radiuss <= 0)
        {
            float x = 0;
            float y = 1;
            float z = 0;

            transform.localPosition = new Vector3(x, y, z);
        }

        else
        {
            float x = radiuss * Mathf.Cos(Mathf.Deg2Rad * angles);
            float z = radiuss * Mathf.Sin(Mathf.Deg2Rad * angles);
            float y = 1;

            transform.localPosition = new Vector3(x, y, z);
        }


        }

 }

请帮忙。

  1. 在 DefaultTrackableBehaviour 脚本中,创建一个 bool 变量 targetFound。
  2. 复制脚本的 Start() 方法中的所有内容并添加到 DefaultTrackableBehaviour 脚本的 start() 方法。
  3. 将脚本中的 Update() 方法复制并添加到 DefaultTrackableBehaviour 脚本中
  4. 在 Update() 方法中添加一个 if 条件来检查 targetFound 是真还是假,如果 targetFound 是真则执行 Update() 代码。
  5. 在 onTrackingFound() 方法中将 targetFound 值设置为 true。
public bool targetFound = false;
void onTrackingFound() {
          targetFound = true;
        }
void Update() {
         if (targetFound){
          // your code here
       }
}