我的场景天空中有一个物体,无论屏幕比例如何,都希望防止它从视野中被切除。所以我在它上面设置了一个画布和一个 PlaceHolder RectTransform
,作为UI元素 - 根据屏幕宽高比进行缩放和重新定位。我的目标是使用此位置通过使用以下脚本确定放置场景对象的位置:
Camera mainCam;
RectTransform placeHolder;
private void Start()
{
mainCam = GameObject.FindGameObjectWithTag("MainCamera")
.GetComponent<Camera>();
placeHolder = GameObject.FindGameObjectWithTag("SkyObjectPlaceholder")
.GetComponent<RectTransform>();
var screenPos = mainCam.ScreenToWorldPoint(
new Vector3(placeHolder.rect.x, placeHolder.rect.y, 0));
transform.position = new Vector3(screenPos.x, screenPos.y,
transform.position.z);
}
问题是我的天空物体始终位于屏幕中央。它不是现场任何东西的孩子,我只是把它放在那里。占位符位于画布的右上角。请注意,我尝试使用UI元素的锚点,将其设置为左下角,右上角,无变化,场景对象始终位于屏幕的中心。
我做错了什么?如何使Scene
元素匹配Canvas
元素的位置,以便它紧跟在它后面?
注意:我正在使用透视相机。我不知道这是否重要,但我想我提到它,以防万一。
又一个编辑:在稍微讨论了这个问题之后,我发现这个问题可能与我给Z
的{{1}}输入有关,在我的情况下它是0.我无法'但是要获得可行的Z输入。
答案 0 :(得分:-1)
嗯...我认为你应该改变那个对象的排序层