首页 > 解决方案 > 如何在unity 3d中停止旋转子孩子

问题描述

我有三个游戏对象 A、B 和 C。A 是 B 的父对象,B 是 C 的父对象。A 是刚体和主要移动对象。B 是非刚性变换对象,它不断地从 0,0,0 旋转到 0,0,45。我希望当 B 旋转时,B 的子 C 也旋转,但其本地 y 轴必须为 0(锁定)。例如,旧校车的每个雨刷都有一个副雨刷,当主雨刷移动时,子雨刷也移动总线,其轴线保持垂直。这就是我想要的。请任何身体帮助...

在此处输入图像描述

标签: unity3drotationfreeze

解决方案


考虑将以下内容附加到雨刮片的脚本中:

Vector3 desiredRotation;

void Update()
{
    transform.rotation = Quaternion.Euler(desiredRotation + new Vector3(0.0f, 0.0f, transform.parent.rotation.z * -1.0f));
}

这会将孩子的旋转更改为与父母的相反。如果主刮水器移动 90 度,副刮水器将旋转 -90 度以抵消它。

如果除此之外还想旋转 SubWiper,则需要修改所需的Rotation。

此解决方案允许您“忽略”直接父母的轮换,但您仍会遵循祖父母的轮换。如果您在汽车上安装了挡风玻璃雨刷,如果汽车倒置,则副雨刷不应保持向上固定,但仍应随汽车旋转。车是爷爷奶奶的。


推荐阅读