Вращение объекта в Вуфории с использованием c# Unity - PullRequest
0 голосов
/ 28 мая 2020

Я написал простой сценарий в c# для Unity, чтобы создать трехмерный объект, например сферическую орбиту (0,0,0) над целевым изображением.

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

public class Orbit : MonoBehaviour
{
    float angles;
    float radiuss;
    float angleSpeed;

    // Start is called before the first frame update
    void Start()
    {
        angles = 0;
        radiuss = 0.2f;
        angleSpeed = 1;

    }

    // Update is called once per frame
    void Update()
    {
        angles += Time.deltaTime * angleSpeed;


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

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

Скрипт отлично работает, если не используется для Vuforia, но когда я добавляю его к объекту для Vuforia, он ведет себя странно и не следует по пути, описанному в сценарии.

Это конфигурации и иерархия. enter image description here

enter image description here

Пожалуйста, помогите.

1 Ответ

1 голос
/ 08 августа 2020

Вы должны проверить в своей конфигурации vuforia, как это влияет на центр мира. Я думаю, что это в AR Camera, у вас есть компонент «Vuforia Behavior». И у вас есть параметр «World Center Mode». По умолчанию это ваше устройство:

введите описание изображения здесь

Это означает, что ваша камера всегда является исходной точкой, поэтому, когда вы перемещаете свой телефон или камеру в реальном мире, на самом деле движутся объекты (их положение в зависимости от камеры изменяется) в «мире единства».

Попробуйте заменить:

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

на:

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