Расположение Gameobject, чтобы всегда оставаться в центре экрана - PullRequest
1 голос
/ 07 мая 2019

Я пытаюсь расположить игровой объект так, чтобы он всегда оставался в центре экрана.Для этого я использую следующий код:

sphere.SetActive(true);
Vector3 lookAtPosition = FirstPersonCamera.ScreenToWorldPoint(new Vector3(Screen.width / 2, Screen.height / 2, FirstPersonCamera.nearClipPlane));
sphere.transform.position = lookAtPosition;

Но по какой-то причине игровой объект вообще не виден с указанным выше кодом.

Итак, я попытался передать его в эфири сделать его видимым.

Ниже приведен соответствующий код,

TrackableHitFlags raycastFilter = TrackableHitFlags.PlaneWithinPolygon | TrackableHitFlags.FeaturePointWithSurfaceNormal;

TrackableHit hit;
if (Frame.Raycast(screenCenter.x, screenCenter.y, raycastFilter, out hit))
{
    var pose = hit.Pose;

    sphere.SetActive(true);
    sphere.transform.position = pose.position;
    sphere.transform.up = pose.up;
}

Игровой объект иногда появляется с вышеуказанным кодом, но он не отцентрирован точно на экране и не отображаетсянавсегда.Как мне разобраться?

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Самый простой способ сделать это - использовать следующий код (это пример кода для ARCore SDK в Android Studio):

static const Pose oneMeterAway = Pose.makeTranslation(0, 0, -1);
objectPose = camera.getPose().extractTranslation().compose(oneMeterAway);

А затем вам нужно обновлять его каждый кадр.

Надеюсь, это поможет.

1 голос
/ 07 мая 2019
  • Возможно, ваш объект находится сверху камеры и снаружи в поле зрения
  • Проблема с сортировочным слоем

Скриншот вашего инспектора и окна сцены может помочь.

...