Я создаю мобильное приложение на основе игры под названием StackAR для Android для своего университета. По сути, это игра, в которой вы можете сложить кубы друг над другом, чем больше вы сложите, тем выше будет счет.
Вот оно , я воссоздаю это.
Теперь то, что я делаю, - это нажатие на экран, якорь устанавливается на отслеживаемый и пустой объект GO с кубом, когда создается экземпляр ребенка. Так что теперь префаб установлен на якорь. В свою очередь, выводит на экран мобильного телефона куб, расположенный на плоскости.
За проблему ...
Когда я хочу добавить движущийся куб поверх другого (точно так же, как в видео выше), куб смещается от точки привязки без причины.
Пустой GameObject на сцене заполняется кубами, когда пользователь касается, а затем привязывается к якору и пустому GO. И забавно то, что всякий раз, когда я добавляю их вручную из иерархии, вывод получается именно так, как я этого хочу.
Вот функция, которая добавляет куб в башню или стек.
private void AddToStack()
{
GameObject nextInStack = Instantiate(cube, new Vector3(hit.Pose.position.x, hit.Pose.position.y + (numberOfObjects * yOffset.y * 2), hit.Pose.position.z), hit.Pose.rotation);
nextInStack.transform.parent = GameObject.Find("Tower").transform;
nextInStack.transform.localPosition = anchor.transform.position;
listOfCubes.Add(nextInStack);
}
И это добавляет начальный пустой GO.
private void PlaceBase()
{
GameObject placed_obj = Instantiate(gameobj_to_place, new Vector3(hit.Pose.position.x, hit.Pose.position.y + yOffset.y, hit.Pose.position.z), hit.Pose.rotation);
anchor = hit.Trackable.CreateAnchor(hit.Pose);
placed_obj.transform.parent = anchor.transform;
baseCubeIsPlaced = true;
//AddToStack();
}
И это присутствует в скрипте CubeBehaviour, который отвечает за перемещение куба слева направо.
private void TranslateCubeForward()
{
forwardMethod = true;
if (isGoingForward)
transform.Translate(Vector3.forward * speed * Time.deltaTime);
else
transform.Translate(-Vector3.forward * speed * Time.deltaTime);
if (transform.localPosition.z >= limitOfTranslation)
{
isGoingForward = false;
}
if (transform.localPosition.z <= -limitOfTranslation)
{
isGoingForward = true;
}
}
Я ожидал, что куб будет располагаться прямо над другим при движении. Но когда объект перемещается, вся вещь смещается, когда сценарий перемещения удаляется из куба, он создается правильно.