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

时间:2013-08-06 15:55:10

标签: c# unity3d physics

我想让我的船模仿真中的船旋转并在所有轴上移动。然而,我对船的运动进行编程的方式使得这不可能。

它的移动方式:

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

它的转变方式:

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

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

所以我想做的是让船受到重力的影响,但仍漂浮在水面上。然后,当船撞到某物时,它需要能够“滚动”然后最终返回其正常位置。

那么,是否有任何方法可以使物体在撞击物体后缓慢返回其正常旋转(z旋转0),并且一旦达到某个高度就不会受到重力的影响。 (Y值为34.75)

船上有 Rigidbody 网格对撞机

1 个答案:

答案 0 :(得分:2)

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