Прежде всего ваш куб движется вместе с камерой, потому что ваша цель изображения является дочерней для вашей ARCamera.Поэтому, когда вы перемещаете цель изображения камеры, перемещается и ваш куб.Убедитесь, что у вашего ImageTarget
нет родителя.
Я не понял, почему вам нужно заблокировать любое движение по оси Y.Я предполагаю, что вы делаете что-то не так с легким прикосновением, когда вы двигаете объектЯ не использовал Lean Touch, но я добился этого с помощью клавиатуры.Вы можете преобразовать его в бережное отношение, изменив следующий скрипт.Просто добавьте эти строки в ваш ImageTarget
DefaultTrackableEventHandler
скрипт:
//Variables for getting capsule and checking if ImageTarget is tracked
private bool isTracked = false;
private GameObject capsule;
Затем создайте метод Update
для получения ввода от пользователя, подобного этому.
void Update()
{
if(isTracked)
{
if(Input.GetKey(KeyCode.W))
{
//using forward for moving object in z axis only.
//Also using local position since you need movement to be relative to image target
//Global forward can be very different depending on your World Center Mode
capsule.transform.localPosition += Vector3.forward * Time.deltaTime;
}
else if (Input.GetKey(KeyCode.S))
{
capsule.transform.localPosition -= Vector3.forward * Time.deltaTime;
}
if (Input.GetKey(KeyCode.A))
{
//Using Vector3.left and right to be make sure movement is in X axis.
capsule.transform.localPosition += Vector3.left * Time.deltaTime;
}
else if (Input.GetKey(KeyCode.D))
{
capsule.transform.localPosition += Vector3.right * Time.deltaTime;
}
}
}
Каквы можете видеть, что по оси Y нет движения, потому что я использовал векторы вперед, влево и вправо, чтобы убедиться, что движение происходит только по осям X и Y.
Последнее, вы должны убедиться, что isTracked
обновлено.Для этого необходимо добавить isTracked = false;
в методе OnTrackingLost
и isTracked = true;
в методе OnTrackingFound
.Удачи!