Конгер Д.
Физика для разработчиков компьютерных игр
стр. 364

объекта. Когда класс inmersible_rigid_body прикладывает выталкивающую силу к объекту, он устанавливает в true переменную buoyancyAp-plied. После этого значение переменной buoyancyApplied не должно изменяться до тех пор, пока объект не будет извлечен из воды, либо не изменится его масса или объем. Если это происходит, то переменная buoyancyApplied сбрасывается в false.

В элементе данных dragCoefficient, объявленном в строке 7 листинга 13.1, хранится коэффициент вязкого трения. Его значение должно лежать в пределах от 0 до 1. Чем больше это значение, тем сильнее жидкость увлекает за собой находящиеся в ней объекты. Большие значения этого элемента данных соответствуют более вязким жидкостям. В примере программы из этой главы для этого коэффициента выбрано значение 0.5. Оно вполне подходит для большинства игр, но, возможно, вы захотите подобрать более подходящее для вашей игры значение.

Замечание

Значение коэффициента вязкого трения зависит от материала объекта, от формы этого объекта и свойств жидкости, сквозь которую он движется. Даже если все объекты в вашей игре движутся только в воде, нельзя подобрать единственное значение, которое подойдет для всех объектов. Потратив некоторое время на подбор разных значений этого коэффициента для разных объектов, вы получите гораздо более реалистичное движение.

Трение действует на объект все время, пока этот объект движется. Однако оно должно влиять на все приложенные к объекту силы. Оно уменьшает воздействие и постоянно действующих, и импульсных сил. Класс immersible_rigid_body учитывает воздействие трения на постоянно действующие и импульсные силы при каждом их изменении. Чтобы отследить изменения сил, в классе immersible_rigid_body определены элементы данных constantForceChanged и impulseForceChanged. Если какой-то из этих элементов содержит значение true, то класс immer-sible_rigid_body учтет воздействие трения на соответствующие силы.

В классе immersible_rigid_body содержатся public-методы для чтения и установки значений элементов данных. Однако заметьте, что в этом классе переопределены перегруженные методы Mass (), Constant-Force() и ImpulseForce (). Кроме того, переопределен метод Update (). Чтобы понять, зачем это сделано, взгляните на листинг 13.2.

Новости
Аниме-трейлер Heroes of the Storm посвящён механическим обликам героев
Blizzard выпустила обещанные вместе с появлением в Heroes of the Storm огнемётчика Блэйза новые легендарные механизированные облики нескольких героев: Тираэля, Регара, Абатура и Дехаки.
45-минутная запись геймплея Metal Gear Survive
Японское подразделение IGN представило публике 45-минутную запись геймплея Metal Gear Survive – последней части знаменитой серии, а также первой, в создании которой не принимал участие Хидео Кодзима.