首页 > 解决方案 > 定位游戏对象以始终保持在屏幕中心

问题描述

我试图定位一个游戏对象始终保持在屏幕的中心。我正在使用以下代码来执行此操作,

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;
}

游戏对象偶尔会出现在上面的代码中,但它并没有完全位于屏幕的中心,也不会永远出现。我怎样才能解决它?

标签: c#unity3daugmented-realityarcoregameobject

解决方案


  • 可能是您的对象位于相机顶部且在其视野之外
  • 排序层有问题

检查器和场景窗口的屏幕截图可能会有所帮助。


推荐阅读