将对象返回到其原始旋转和高度单位C#

本文关键字:高度 单位 旋转 原始 对象 返回 | 更新日期: 2023-09-27 18:26:34

我想在船的3D模拟中允许船在所有轴上旋转和移动。然而,我对船的运动进行编程的方式使这成为不可能。

移动方式:

this.transform.Translate(Vector3.left * Time.smoothDeltaTime * speed);

转向方式:

this.transform.Rotate(Vector3.forward * Time.smoothDeltaTime * (int)horizontal)

船的形状也使得它不可能简单地在坚实的底座上移动,因为它确实有三角形的形状(用于水下碰撞)。

所以我想做的是让船受到重力的影响,但仍然漂浮在水面上。然后,当船撞到什么东西时,它需要能够"翻滚",然后最终返回到正常位置。

那么,有没有什么方法可以让物体在撞击后慢慢恢复到正常旋转(z旋转为0),并且在达到一定高度后不受重力影响。(Y值34.75)

该船有一个刚体和一个网格对撞机

将对象返回到其原始旋转和高度单位C#

我不确定玩家在被击中时是否能够移动,但您可以将当前值保存到局部变量中(例如:Transform transformOnHit)。完成滚动后,您可以使用自己提供的代码来转换和旋转回原始变换。