New*_*dio 1 unity-game-engine unityscript
我的角色里面有2个游戏对象说right_obj和left_obj,我希望他们忽略父旋转,就像玩家改变它的方向(左,右),这两个游戏对象保持他们的位置和旋转,到目前为止我使用2种方法但是失败.这是我的代码,我在我的两个游戏对象上使用这个脚本,但他们忽略了这一行
// first one approch
Quaternion rotation;
void Awake()
{
rotation = transform.rotation;
}
void LateUpdate ()
{
transform.rotation = rotation;
}
// 2nd approch
void LateUpdate ()
{
transform.rotation = Quaternion.identity;;
}
Run Code Online (Sandbox Code Playgroud)
你真的需要这种关系吗?
如果你真的不需要父/子关系,你可以在0,0,0处产生一个空的GameObject,并在场景中间产生实际的父和子作为GameObject的子节点,这样它们仍然会被分组在某种关系中,而不是父亲/孩子,你会得到兄弟/兄弟的关系,使第一个独立于第二个.
如果你需要让两个对象相互依赖,但不是每一个方面,因为它应该在父/子中尝试使用父约束
通过这种方式,您将获得这种类型的层次结构:
- 父亲GO(在0,0,0)
- Child1(您的实际父亲)
- Child2(您的实际孩子)
Child1和Child2通过ParentConstraint同步位置,但不是它们的轮换.
除此之外,除了对孩子施加相反的旋转之外别无他法.
小智 5
您还可以使用旋转约束组件。这与上面提到的父约束类似,但在我看来更容易理解 - 它只使用旋转,并且仅使用您插入的游戏对象的旋转。
您只需创建一个空的游戏对象并将旋转设置为 0,0,0 ,然后将此空的游戏对象设置为旋转约束的源。我在我的游戏中有这个精确的设置,它覆盖了实际父级的旋转,这就是我想要的。
也许不是绝对最干净的解决方案,但这是值得考虑的事情。
这是文档链接 - https://docs.unity3d.com/Manual/class-RotationConstraint.html
小智 5
如果您确实不想破坏父子层次结构,则可以每帧旋转子级以抵消父级旋转。假设我们有以下场景,
将以下内容添加RestoreOriginRotation.cs
到子对象中,我们可以获得稳定的子对象旋转。
我们能得到什么。
****如果您不关心底层数学,您应该到此为止。***
归档时间: |
|
查看次数: |
5523 次 |
最近记录: |