unity3d - 如何在unity 3d中停止旋转子孩子
问题描述
我有三个游戏对象 A、B 和 C。A 是 B 的父对象,B 是 C 的父对象。A 是刚体和主要移动对象。B 是非刚性变换对象,它不断地从 0,0,0 旋转到 0,0,45。我希望当 B 旋转时,B 的子 C 也旋转,但其本地 y 轴必须为 0(锁定)。例如,旧校车的每个雨刷都有一个副雨刷,当主雨刷移动时,子雨刷也移动总线,其轴线保持垂直。这就是我想要的。请任何身体帮助...
解决方案
考虑将以下内容附加到雨刮片的脚本中:
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。
此解决方案允许您“忽略”直接父母的轮换,但您仍会遵循祖父母的轮换。如果您在汽车上安装了挡风玻璃雨刷,如果汽车倒置,则副雨刷不应保持向上固定,但仍应随汽车旋转。车是爷爷奶奶的。
推荐阅读
- python - 在python的不同类中使用相同的dict
- reporting-services - SSRS 计算系列 MACD 图表条件格式
- angular - 如何根据来源点击在同一页面上过滤我的数据
- swift - 将标题添加到 UICollectionViewLayout
- python - 如何使用 Beautifulsoup 获取成员列表
- r - x[i, j] 中的错误:维数不正确:使用 R(GA 包)中的遗传算法的传输问题
- python - 如果对象是 pytz.timezone 的实例,如何按类型检查?
- javascript - 在执行其他脚本之前将脚本动态添加到 DOM
- react-native - “无法调用 WifiManager.connectToProtectedSSID”仅在应用程序基于 bitrise 而不是本地计算机构建时发生
- java - Java Process Builder - 无法运行简单的程序