当为 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);
}
}
}
请帮忙。
- 在 DefaultTrackableBehaviour 脚本中,创建一个 bool 变量 targetFound。
- 复制脚本的 Start() 方法中的所有内容并添加到 DefaultTrackableBehaviour 脚本的 start() 方法。
- 将脚本中的 Update() 方法复制并添加到 DefaultTrackableBehaviour 脚本中
- 在 Update() 方法中添加一个 if 条件来检查 targetFound 是真还是假,如果 targetFound 是真则执行 Update() 代码。
- 在 onTrackingFound() 方法中将 targetFound 值设置为 true。
public bool targetFound = false;
void onTrackingFound() {
targetFound = true;
}
void Update() {
if (targetFound){
// your code here
}
}
我写了一个脚本,比如说在 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);
}
}
}
请帮忙。
- 在 DefaultTrackableBehaviour 脚本中,创建一个 bool 变量 targetFound。
- 复制脚本的 Start() 方法中的所有内容并添加到 DefaultTrackableBehaviour 脚本的 start() 方法。
- 将脚本中的 Update() 方法复制并添加到 DefaultTrackableBehaviour 脚本中
- 在 Update() 方法中添加一个 if 条件来检查 targetFound 是真还是假,如果 targetFound 是真则执行 Update() 代码。
- 在 onTrackingFound() 方法中将 targetFound 值设置为 true。
public bool targetFound = false;
void onTrackingFound() {
targetFound = true;
}
void Update() {
if (targetFound){
// your code here
}
}