我有三个游戏对象A,B和C。A是B的父,B是C的父,A是刚体和主要的运动对象。B是由0,0,0到0,45不断旋转的非刚性变换对象。我希望当B旋转时,B的子C也旋转,但是它的局部y轴必须是0(锁定)。例如,每辆旧校车的雨刷也有一个子雨刷,当主雨刷移动时,雨刷也会移动它的轴线保持垂直。这就是我想要的。请任何人帮忙..。

发布于 2020-02-21 20:19:09
最简单的解决方案是让C对象更新其旋转,以便transform.up始终是相同的值。
Vector3 upDir;
void Awake()
{
upDir = transform.up;
}
void Update()
{
transform.up = upDir;
}如果您有兴趣保持它与祖父母相同的轮换率,只需将其轮转设置为等于祖父母的轮值:
transform aTransform;
void Awake()
{
aTransform = transform.parent.parent;
}
void Update()
{
transform.rotation = aTransform.rotation;
}发布于 2020-02-21 19:43:52
考虑将以下内容附加到您的刮水器刀片上的脚本:
Vector3 desiredRotation;
void Update()
{
transform.rotation = Quaternion.Euler(desiredRotation + new Vector3(0.0f, 0.0f, transform.parent.rotation.z * -1.0f));
}如果主雨刷移动90度,子雨刷就会旋转-90度来对抗它。
如果您想在此基础上旋转您的SubWiper,那么您将修改desiredRotation。
这个解决方案允许你“忽略”直接父母的旋转,但你仍然会跟随祖父母的旋转。如果你的汽车上有挡风玻璃雨刷,如果汽车倒转,潜水器不应该保持固定向上,但仍然应该与汽车旋转。这辆车是祖父母。
https://stackoverflow.com/questions/60344894
复制相似问题