我是新来的Unity
and Oculus
。我有一堆图像(它们的路径和其他信息是加载自JSON file)我正在尝试在 VR 房间中渲染它。并希望为用户提供一种体验,他可以使用以下命令在该房间内移动这些图像Oculus Touch
.
我放置了一个Empty Object
它有一个迭代 JSON 的脚本和creates a prefab object
(其中有Rigid body
,Box Collider
and OVRGrabbable
-这样就可以在 VR 中抓取它,组件)。而且这个prefab object
has a script它负责将图像加载到Sprite
.
什么在起作用?
图像正在渲染并且可以抓取和移动。
什么没有按预期工作?
我跟着这个tutorial,如图所示,立方体的角度保持得很好。但是,当抓取并旋转图像时,它不会保留其侧角。如下图所示:
Question
有什么办法可以修复它吗?我试图在网上寻找它,但因为我是新手Unity
我不太确定我到底缺少什么。
任何线索将不胜感激。
我认为问题出在你的等级制度上。你的Images
游戏对象(你的父对象DisplayImage
)的规模为(1.88,1,1)
。在 Unity 中尝试旋转其父对象具有不均匀比例的子对象会产生奇怪的结果。尝试重置您的比例Images
反对(1,1,1)
看看是否有帮助。
发生此行为是由于“父/子”关系的性质。孩子的坐标系是相对于其父母的。我们可以将其视为父母为我们的孩子定义一个坐标系。这就是我们所说的局部空间。因此,当我们对父级执行任何线性变换时,就像我们在子级用来定义其方向的整个父级坐标系上执行它们一样。因此,平移父级将移动其所有子级,因为我们的整个局部坐标空间已随父级移动。请注意,我们的孩子仍然会拥有相同的localPosition
,但他们的全球position
将会改变。
相同的逻辑适用于缩放和旋转。旋转父级本质上是围绕父级的中心点(这将是点)旋转我们的子级正在使用的整个坐标空间(0,0,0)
在局部空间)。因此,所有子对象都将被旋转,就好像它们是父对象的扩展一样。
在我们的情况下,我们缩放了父对象,从而缩放了我们用来定义子对象的整个坐标系。这意味着使用父级坐标空间的任何内容也将被缩放根据家长的规模。在我们的情况下,父级的缩放比例为(1.88,1,1)
。所以附加到父级的所有内容也随之缩放父级的 X 轴 1.88,导致屏幕截图中出现奇怪的效果。尽管旋转我们的子对象,它仍然沿着父对象的 X 轴缩放。
(Link有关于此的官方文档。)
解决方案是在层次结构中尽可能深入地应用线性变换。在这里,不是缩放父级,而是缩放子级。如果父对象需要缩放,或者其比例动态变化,另一种解决方案是从父/子层次结构中删除子对象,并根据脚本中旧父对象的变换来操作其变换。在这种情况下,您可以将未链接的子级的位置和旋转设置为父级的位置和旋转,但忽略比例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)