Мне нужно найти способ сделать 3D-лодку, которая кажется плавучей в воде. В настоящее время я использую лодку с плоским дном и заставляю ее скользить по рельефу, который находится чуть ниже воды. Это дает иллюзию плавучести, но не совсем то, что я ищу.Создание плавучего лодку в Unity
движется лодка с использованием
this.transform.Translate(Vector3.left * Time.smoothDeltaTime * ((speed) + 1));
лодка поворачивает с помощью
this.transform.Rotate(Vector3.forward*Time.smoothDeltaTime*(int)(30*horizontal));
Лодка имеет Rigidbody, которая использует гравитацию, не интерполировать и имеет непрерывное обнаружение динамического столкновения. Он также использует выпуклый Mesh Collider с плавными столкновениями сферических поверхностей.
У воды есть Коллайдер Box, который используется как триггер.
Теперь мне нужно, чтобы лодка, казалось, плавала в воде программно. Это означает, что
- качается, когда она попадает что-то
- Не прикасайтесь к нижней части «река»
- Корректирует вращение, чтобы остаться плоской на реке (не остается криво после удара остров или другое препятствие)
Я хотел бы сделать это так, что я могу дать основание моей лодки правильную форму, так что она может иметь более реалистичные столкновения с подводными препятствиями.
Во-первых, если вы хотите, чтобы лодка двигалась физически правильно, вы не можете, и вы не должны ее перемещать с помощью 'transform.Translate', поскольку это вызывает проблемы с объектами, которые имеют жесткое тело и реагируют на физику (читайте: is ** не ** устанавливается в кинематику). Причина: Когда вы перемещаете объект внутри другого кинематического объекта, вы получите тяжелую реакцию, потому что 2 физических объекта находятся внутри друг друга, и физике приходится отталкивать их. Чем дальше они зажимаются друг в друга, тем сильнее будет реакция отклика на – Tseng
. Я видел страницу, на которой упоминалось несколько сценариев плавучести лодки, таких как продвинутый и, по крайней мере, один был свободен, на форумах единства. сделать лодку и похож на лодку. –