c# - 定位游戏对象以始终保持在屏幕中心
问题描述
我试图定位一个游戏对象始终保持在屏幕的中心。我正在使用以下代码来执行此操作,
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;
}
游戏对象偶尔会出现在上面的代码中,但它并没有完全位于屏幕的中心,也不会永远出现。我怎样才能解决它?
解决方案
- 可能是您的对象位于相机顶部且在其视野之外
- 排序层有问题
检查器和场景窗口的屏幕截图可能会有所帮助。
推荐阅读
- rust - 在另一个属性宏的实现中调用属性宏
- unity3d - 将 .FBX 从 Blender 导入 Unity 时出现深色纹理
- javascript - UrlFetchApp 的意外重定向
- version - 升级hugo版本
- android - System.out.print with // 打印代码 Blue。这是什么意思?
- google-sheets - Is there a way to represent conditionals assuming absolute value of the item in the cell for custom number formats?
- haskell - 在 Haskell 中,表达对类头或类方法的约束?
- c# - System.PlatformNotSupportedException: '此平台不支持安全二进制序列化
- ios - Firebase 吊舱的高电池使用率
- javascript - 如何将点击事件传递给子组件