Ru/Physics Entity Overview: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
(Created page with "{{LanguageBar|title = Обзор объектов игровой физики}} {{Mergefrom|Constraint}} Добавление игровой физики на платформе Source открыло широкий спектр возможностей симуляции, от качающихся шин до взамосвязанных механизмов. Теперь разработчики могут создавать физически реалистичные...")
 
No edit summary
Line 11: Line 11:
| <code>[[phys_constraintsystem]]</code>
| <code>[[phys_constraintsystem]]</code>
|-
|-
| If you have a collection of objects connected by constraints, the constraint solvers may fight each other as they are each solved locally (without regard to any of the other constraints). This can cause a system of constraints to be unstable. You'll see this as vibration or jiggling. To prevent this problem, you can use a phys_constraintsystem for each group of connected constraints and have that group refer to it as their system manager. When this is done, those solvers will be iterated as a group, which will create a feedback loop between the constraints so that interactions between them can be managed. The constraint system also allows you to control the number of iterations - so you can spend more CPU to get the solution to be tighter. Generally problems here are the result of objects of dissimilar mass being connected by constraints.  If a large-mass object is in violation of the constraint, it may take more iterations for it to move to a non-violating position/orientation. Note that all ragdolls create a constraint system internally to solve these kinds of problems.
| Если у есть несколько объектов, связанных разными ограничениями, то расчёты ограничений могут конкурировать друг с другом, поскольку каждый из них выполянется отдельно (без учета других ограничений). Это может привести к нестабильности системы ограничений. Это будет наблюдаться как вибрация или скачки объектов. Чтобы предотвратить эту проблему, можно использовать [[phys_constraintsystem]] для каждой группы связанных ограничений, указав объект [[phys_constraintsystem]] в качестве диспетчера системы ограничений. В этом случае расчёты будут выполняться итерационно для каждой группы с учётом обратной связи между ограничениями, чтобы позволит управлять взаимодействием между ними. Система ограничений также позволяет регулировать количество итераций, можно потратить часть ресурсов ЦП, чтобы получить более точное решение. Основной проблемой является применение физических ограничений для объектов разной массы. Если объект большой массы нарушает ограничение, может потребоваться больше итераций, чтобы перевести его в соотвествующее положение/ориентацию. Обратите внимание, что все [[Prop_ragdoll|куклы]] создают внутреннюю систему ограничений для решения подобных проблем.
|}
|}
{| class=standard-table
{| class=standard-table
| <code>[[phys_constraint]]</code> (жёсткое соединение)
| <code>[[phys_constraint]]</code> (жёсткое соединение)
|-
|-
| The most simple constraint available, this constraint simply attaches one entity to another, as if it were fixed by a rigid constraint like nails or glue. The entity defines two fields for the two entities to constrain. If either entity is left blank, the provided entity will be rigidly attached at the origin of the constraint. This is most often used to constrain objects to the world. Like all constraints, you may also specify a force or torque limit - which the constraint will "break" at. When enough force or torque is applied to the object attached to the constraint it will break, causing it to disable itself and produces an output which can be used to orchestrate other events.
| Самое простое ограничение из доступных, это ограничение просто прикрепляет один объект к другому, как если бы он был соединён гвоздями или клеем. Объект имеет два параметра для указания взаимосвязываемых ограничением объектов. Если один из объектов не указан, указанный объект присоединяется к центру расположения объекта-ограничения. В основном это используется для ограничения объектов в мире. Для всех ограничений, можно указать предел усилия или крутящего момента, при котором ограничение «разрушится». Когда к объекту, присоединённому к ограничению, прикладывается достаточное усилия или крутящий момент, ограничение отключается и срабатывает выход, который можно использовать для упарвления другими событиями.
''Изучите mapssdk_phys_constraint.vmf''
''Изучите mapssdk_phys_constraint.vmf''
|}
|}
Line 22: Line 22:
| <code>[[phys_ballsocket]]</code> (шарнир, связка ключей)
| <code>[[phys_ballsocket]]</code> (шарнир, связка ключей)
|-
|-
| A ball socket constraint is identical to how your arm attaches to your torso at the shoulder. An object is fixed to another object at a point and is able to rotate and move in a spherical motion around that point. This can be used to express the connection between a rope and a piece of world architecture within the game. The rope will be able to rotate in a sphere around the point on the world.
| Шарнир идентичен тому, как рука крепится к туловищу в плече. Объект прикреплён к точке другого объект и может вращаться и двигаться по сфере вокруг этой точки. Это можно использовать в игре для изображения привязи веревкой с каким-либо элементом мира. Веревка будет вращаться внутри сферы вокруг точки в пространестве.


''Изучите mapssdk_phys_ballsocket.vmf''
''Изучите mapssdk_phys_ballsocket.vmf''
Line 29: Line 29:
| <code>[[phys_hinge]]</code> (петля/волчок)
| <code>[[phys_hinge]]</code> (петля/волчок)
|-
|-
| Like the hinge of a door, this constraint allows the constrained objects to rotate in one axis of movement. The axis of hinge is expressed via a helper tool inside of Hammer. The hinge can be given a friction component, which causes it to come to a rest more quickly like an old rusty hinge might. The "load scale" field is identical to the phys_motor implementation.
| Подобно дверной петле, это ограничение позволяет объектам вращаться вокруг одной оси. Ось петли задаётся с помощью компаса внутри редактора карт [[Hammer]]. Можно указать величину трения, которая заставит остановиться быстрее, как это происходит со старой ржавой петлёй. Поле "величина нагрузки" действует аналогично [[phys_motor]].


''Изучите mapssdk_phys_hinge.vmf''
''Изучите mapssdk_phys_hinge.vmf''
Line 36: Line 36:
| <code>[[phys_lengthconstraint]]</code> (выпас на верёвке)
| <code>[[phys_lengthconstraint]]</code> (выпас на верёвке)
|-
|-
| This is a constraint that preserves the distance between two entities. If the "Keep Rigid" flag is set, it can be thought of it as a rod. If not, it acts like a virtual rope (with some amount of "give").
| Это ограничение сохраняет расстояние между двумя объектами. Если установлен флаг "Сохранять жёстким", его можно рассматривать как стержень. Если нет, оно действует как виртуальная веревка с некоторой "погрешностью".


''Изучите mapssdk_phys_lengthconstraint.vmf''
''Изучите mapssdk_phys_lengthconstraint.vmf''
Line 43: Line 43:
| <code>[[phys_pulleyconstraint]]</code> (блок-шкив)
| <code>[[phys_pulleyconstraint]]</code> (блок-шкив)
|-
|-
| Essentially, this constraint is really two length constraints and two points in space. It is similar to virtual rope connected to two objects, each suspended from a pulley above them. The constraint keeps the sum of the distances between the pulley points and their suspended objects constant. In other words, moving one constrained object will cause the other to move as well to keep the "rope" length constant.
| По сути, это ограничение на самом деле представляет собой два ограничения по длине и две точки в пространстве. Это похоже на виртуальную веревку, соединяющую два объекта, каждый из которых подвешен на шкив над ними. Ограничение сохраняет суммарное расстояние между точками шкива и подвешенными к ним объектами. Другими словами, перемещение одного ограниченного объекта приведет к перемещению другого, чтобы сохранить длину "веревки" постоянной.


''Изучите mapssdk_phys_pulleyconstraint.vmf''
''Изучите mapssdk_phys_pulleyconstraint.vmf''
|}
|}
{| class=standard-table
{| class=standard-table
| <code>[[phys_convert]]</code>
| <code>[[phys_convert]]</code> (преобразователь в физический объект)
|-
|-
| phys_convert should be used to convert the behavior of a brush or model to physics. For example, let's say you made a func_tracktrain with some prop_dynamic entities attached as children. For a while you use Entity I/O to move the tracktrain and its children along some path, then at some event you want the train to explode and become physically simulated to tumble. You can use a phys_convert to convert the tracktrain and the dynamic props into physics objects at the time of that event (since func_tracktrain and prop_dynamic do not have the desired physics behavior built in).
| phys_convert следует использовать для превращения [[brush entity|объёмных объектов]] или [[model|моделей]] в физические объекты. Например, создан [[func_tracktrain]] с некоторыми объектами [[prop_dynamic|динамичного реквизита]], прикрепленными в качестве дочерних. Некоторое время используется [[Entity I/O|система ввода вывода]] для перемещения [[func_tracktrain]] и его дочерних объектов по некоторому пути, затем в какое-то время необходимо, чтобы поезд взорвался и физически имитировать его крушение. Можно использовать [[phys_convert]] для преобразования [[func_tracktrain]] и динамичного реквизита в физические объекты во время этого события (поскольку [[func_tracktrain]] и [[prop_dynamic]] не имеют желаемого встроенного физического поведения).
''Изучите mapssdk_phys_convert.vmf''
''Изучите mapssdk_phys_convert.vmf''
|}
|}
Line 56: Line 56:
| <code>[[phys_ragdollconstraint]]</code> (сочленения куклы)
| <code>[[phys_ragdollconstraint]]</code> (сочленения куклы)
|-
|-
| Like a normal phys_constraint but used to tether ragdolls to a location in space, this constraint also allows the user to control how much movement in each axis is permitted, as well as how much friction is applied in each axis.
| Аналогично обычному [[phys_constraint]], но используется для привязки кукол к определённому месту в пространстве, это ограничение также позволяет контролировать доступное перемещение, а также величину трения по каждой оси.


''Изучите mapssdk_phys_ragdollconstraint.vmf''
''Изучите mapssdk_phys_ragdollconstraint.vmf''
Line 63: Line 63:
| <code>[[phys_slideconstraint]]</code> (ползун)
| <code>[[phys_slideconstraint]]</code> (ползун)
|-
|-
| This constraint allows movement along one axis. You can think of this like a shower curtain ring sliding along the curtain rod. Like the hinge constraint, the entity provides a visual helper for specifying the direction of travel.
| Это ограничение позволяет перемещаться вдоль одной оси. Вы можете представить это как кольцо занавески для душа, скользящее вдоль карниза для занавески. Как и ограничение [[phys_hinge]], объект предоставляет визуальный помощник для указания направления перемещения.


''Изучите mapssdk_phys_slideconstraint.vmf''
''Изучите mapssdk_phys_slideconstraint.vmf''
Line 70: Line 70:
| <code>[[phys_keepupright]]</code> (гироскоп)
| <code>[[phys_keepupright]]</code> (гироскоп)
|-
|-
| Some objects need to attempt to remain upright. This constraint applies torque to a physics object to attempt to do just that. The number of degrees of angular torque that can be applied per second is specified in the "Angular Limit" field of the entity. The higher the number, the more rigidly the object will maintain its upright positioning.
| Некоторые объекты должны пытаться оставаться в вертикальном положении. Данное ограничение применяет крутящий момент к физическому объекту, чтобы попытаться сделать это. Величина крутящего момента, который может быть сообщён в секунду, указывается в поле «Крутящий момент» объекта. Чем больше число, тем надёжнее объект будет сохранять свое вертикальное положение.


''Изучите mapssdk_phys_keepupright.vmf''
''Изучите mapssdk_phys_keepupright.vmf''
Line 77: Line 77:
| <code>[[phys_spring]]</code> (пружина/резинка)
| <code>[[phys_spring]]</code> (пружина/резинка)
|-
|-
| This is a physically simulated spring. The "Length" field specifies what is known as the natural spring length. This is how long the spring would be if it was at rest (nothing hanging on it or attached). When you attach something to the spring, it will stretch longer than its natural length. The amount of stretch is determined by the "Sprint Constant" field. The larger the spring constant, the less stretch the spring will accommodate.
| Это физическое моделирование пружины. Поле «Длина» указывает исходную длину пружины. Это то, какой длины была бы пружина, если бы она находилась в состоянии покоя (на ней ничего не висело и не было бы прикреплено). Если прикрепить что-либо к пружине, она растянется больше своей исходной длины. Величина растяжения определяется полем «Коэффициент упругости». Чем больше коэффициент, тем меньшее будет растягиваться пружина.


''Изучите mapssdk_phys_sprint.vmf''
''Изучите mapssdk_phys_sprint.vmf''
Line 87: Line 87:
| <code>[[phys_magnet]]</code> (магнит)
| <code>[[phys_magnet]]</code> (магнит)
|-
|-
| An entity that acts like a magnet, attaching metallic physics objects to itself when they touch it.
| Объект, действующий подобно магниту, притягивающему к себе металлические физические объекты, когда они к нему приближаются.


''Изучите mapssdk_phys_magnet.vmf''
''Изучите mapssdk_phys_magnet.vmf''
Line 94: Line 94:
| <code>[[phys_motor]]</code> (ротор)
| <code>[[phys_motor]]</code> (ротор)
|-
|-
| An entity that tries to spin a target entity at a particular speed. This can be thought of as a motor with an axle connecting directly to an object. Connected to a tire, it could make it spin much like a car's tire. There is also a "load scale" field which works similarly to horsepower. The motor will attempt to move an object at a given velocity, but if that object creates resistance (from a collision, for instance), the motor will use the load scale field to increase its output to continue and move the object at the correct speed. A value of "2" would make the motor exert twice as much force as it normal would need to in order to move the attached object, should it meet with resistance.
| Объект, который пытается вращать целевой объект с определенной скоростью. Это можно представить как вал двигателя, соединенный напрямую с объектом. Подключенный к колесу, он будет пытаться его вращать подобно колесу автомобиля. Имеется также поле «величина нагрузки», которое отвечает за увеличение мощности. Ротор будет пытаться вращать объект с заданной скоростью, но если этот объект оказывает сопротивление (например, из-за столкновения), ротор будет увеличивать свою мощность, в соотвествии со значением величины нагрузки, для продолжения вращения объекта с необходимой скоростью. Значение «2» заставит ротор прилагать в два раза больше усилия, чем требуется для вращения прикреплённого объекта без сопротивления.


''Изучите mapssdk_phys_motor.vmf''
''Изучите mapssdk_phys_motor.vmf''
Line 101: Line 101:
| <code>[[phys_ragdollmagnet]]</code> (магнитное распятие)
| <code>[[phys_ragdollmagnet]]</code> (магнитное распятие)
|-
|-
| A simple entity that attracts ragdolls towards it. This is often useful for getting a more reliably dramatic death from a corpse. The entity can attract at a point, or as a "bar", meaning the entity is pulled towards that axis but not directly at a point in space. This is useful for pulling a ragdoll towards a railing's edge at any point along that edge, while not pulling it towards a specific point.
| Простое ограничение, которое притягивает к себе [[Prop_ragdoll|кукол]]. Это полезно для получения более достоверного падения трупа. Объект может притягиваться к точке или плашмя, то есть притягивается к прямой, а не к одной точке в пространстве. Это полезно для притягивания [[Prop_ragdoll|куклы]] к краю перил в любой точке вдоль края, а не к определённой точке.


''Изучите mapssdk_phys_ragdollmagnet.vmf''
''Изучите mapssdk_phys_ragdollmagnet.vmf''
Line 108: Line 108:
| <code>[[phys_thruster]]</code> (движитель/тяга)
| <code>[[phys_thruster]]</code> (движитель/тяга)
|-
|-
| This entity applies force to an entity along a specified axis. This is directly analogous to a rocket's engines propelling it forward. The entity also has a built-in timing feature which allows the designer to specify a duration for the thruster to propel its target, then stop.
| Этот объект прикладывает усилиие к объекту вдоль указанной оси. Это прямой аналог реактивного двигателя. Объект имеет таймер, который позволяет проектировщику указать длительность, в течение которой движитель должен толкать целевой объект, а затем отключиться.


''Изучите mapssdk_phys_thruster.vmf''
''Изучите mapssdk_phys_thruster.vmf''
Line 115: Line 115:
| <code>[[phys_torque]]</code> (стартер)
| <code>[[phys_torque]]</code> (стартер)
|-
|-
| Like the phys_motor entity, this entity applies angular velocity to an object. This entity also has the ability to ignore the mass of the object being turned, as well as having a built in timer which allows the entity to exert torque on the attached entity for a given amount of time, disabling itself afterwards.
| Аналогично [[phys_motor]], этот объект применяет крутящий момент к другому объекту. Этот объект также имеет возможность игнорировать массу поворачиваемого объекта, а также встроенный таймер, который позволяет оказывать крутящий момент к прикрепленному объекту в течение заданного времени, отключая себя после этого.
 


''Изучите mapssdk_phys_torque.vmf''
''Изучите mapssdk_phys_torque.vmf''

Revision as of 11:26, 17 May 2025

English (en)Русский (ru)中文 (zh)Translate (Translate)
Merge-arrows.png
It has been suggested that Constraint be merged into this article or section. (Discuss)

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

Физические ограничения

В реальном мире объекты физически ограничивают друг друга различными способами. Двери крепятся к своим рамам с помощью петель, на которых они могут качаться. Ваша рука крепится к туловищу с помощью шарового шарнира. Тяжёлые объекты можно перемещать с помощью системы тросов и шкивов. Эти закономерности в точности симулируются игровой физикой на платформе Source. Далее приведён перечень различных систем ограничений, которые можно использовать для присоединения объектов друг к другу.

phys_constraintsystem
Если у есть несколько объектов, связанных разными ограничениями, то расчёты ограничений могут конкурировать друг с другом, поскольку каждый из них выполянется отдельно (без учета других ограничений). Это может привести к нестабильности системы ограничений. Это будет наблюдаться как вибрация или скачки объектов. Чтобы предотвратить эту проблему, можно использовать phys_constraintsystem для каждой группы связанных ограничений, указав объект phys_constraintsystem в качестве диспетчера системы ограничений. В этом случае расчёты будут выполняться итерационно для каждой группы с учётом обратной связи между ограничениями, чтобы позволит управлять взаимодействием между ними. Система ограничений также позволяет регулировать количество итераций, можно потратить часть ресурсов ЦП, чтобы получить более точное решение. Основной проблемой является применение физических ограничений для объектов разной массы. Если объект большой массы нарушает ограничение, может потребоваться больше итераций, чтобы перевести его в соотвествующее положение/ориентацию. Обратите внимание, что все куклы создают внутреннюю систему ограничений для решения подобных проблем.
phys_constraint (жёсткое соединение)
Самое простое ограничение из доступных, это ограничение просто прикрепляет один объект к другому, как если бы он был соединён гвоздями или клеем. Объект имеет два параметра для указания взаимосвязываемых ограничением объектов. Если один из объектов не указан, указанный объект присоединяется к центру расположения объекта-ограничения. В основном это используется для ограничения объектов в мире. Для всех ограничений, можно указать предел усилия или крутящего момента, при котором ограничение «разрушится». Когда к объекту, присоединённому к ограничению, прикладывается достаточное усилия или крутящий момент, ограничение отключается и срабатывает выход, который можно использовать для упарвления другими событиями.

Изучите mapssdk_phys_constraint.vmf

phys_ballsocket (шарнир, связка ключей)
Шарнир идентичен тому, как рука крепится к туловищу в плече. Объект прикреплён к точке другого объект и может вращаться и двигаться по сфере вокруг этой точки. Это можно использовать в игре для изображения привязи веревкой с каким-либо элементом мира. Веревка будет вращаться внутри сферы вокруг точки в пространестве.

Изучите mapssdk_phys_ballsocket.vmf

phys_hinge (петля/волчок)
Подобно дверной петле, это ограничение позволяет объектам вращаться вокруг одной оси. Ось петли задаётся с помощью компаса внутри редактора карт Hammer. Можно указать величину трения, которая заставит остановиться быстрее, как это происходит со старой ржавой петлёй. Поле "величина нагрузки" действует аналогично phys_motor.

Изучите mapssdk_phys_hinge.vmf

phys_lengthconstraint (выпас на верёвке)
Это ограничение сохраняет расстояние между двумя объектами. Если установлен флаг "Сохранять жёстким", его можно рассматривать как стержень. Если нет, оно действует как виртуальная веревка с некоторой "погрешностью".

Изучите mapssdk_phys_lengthconstraint.vmf

phys_pulleyconstraint (блок-шкив)
По сути, это ограничение на самом деле представляет собой два ограничения по длине и две точки в пространстве. Это похоже на виртуальную веревку, соединяющую два объекта, каждый из которых подвешен на шкив над ними. Ограничение сохраняет суммарное расстояние между точками шкива и подвешенными к ним объектами. Другими словами, перемещение одного ограниченного объекта приведет к перемещению другого, чтобы сохранить длину "веревки" постоянной.

Изучите mapssdk_phys_pulleyconstraint.vmf

phys_convert (преобразователь в физический объект)
phys_convert следует использовать для превращения объёмных объектов или моделей в физические объекты. Например, создан func_tracktrain с некоторыми объектами динамичного реквизита, прикрепленными в качестве дочерних. Некоторое время используется система ввода вывода для перемещения func_tracktrain и его дочерних объектов по некоторому пути, затем в какое-то время необходимо, чтобы поезд взорвался и физически имитировать его крушение. Можно использовать phys_convert для преобразования func_tracktrain и динамичного реквизита в физические объекты во время этого события (поскольку func_tracktrain и prop_dynamic не имеют желаемого встроенного физического поведения).

Изучите mapssdk_phys_convert.vmf

phys_ragdollconstraint (сочленения куклы)
Аналогично обычному phys_constraint, но используется для привязки кукол к определённому месту в пространстве, это ограничение также позволяет контролировать доступное перемещение, а также величину трения по каждой оси.

Изучите mapssdk_phys_ragdollconstraint.vmf

phys_slideconstraint (ползун)
Это ограничение позволяет перемещаться вдоль одной оси. Вы можете представить это как кольцо занавески для душа, скользящее вдоль карниза для занавески. Как и ограничение phys_hinge, объект предоставляет визуальный помощник для указания направления перемещения.

Изучите mapssdk_phys_slideconstraint.vmf

phys_keepupright (гироскоп)
Некоторые объекты должны пытаться оставаться в вертикальном положении. Данное ограничение применяет крутящий момент к физическому объекту, чтобы попытаться сделать это. Величина крутящего момента, который может быть сообщён в секунду, указывается в поле «Крутящий момент» объекта. Чем больше число, тем надёжнее объект будет сохранять свое вертикальное положение.

Изучите mapssdk_phys_keepupright.vmf

phys_spring (пружина/резинка)
Это физическое моделирование пружины. Поле «Длина» указывает исходную длину пружины. Это то, какой длины была бы пружина, если бы она находилась в состоянии покоя (на ней ничего не висело и не было бы прикреплено). Если прикрепить что-либо к пружине, она растянется больше своей исходной длины. Величина растяжения определяется полем «Коэффициент упругости». Чем больше коэффициент, тем меньшее будет растягиваться пружина.

Изучите mapssdk_phys_sprint.vmf

Прочие

phys_magnet (магнит)
Объект, действующий подобно магниту, притягивающему к себе металлические физические объекты, когда они к нему приближаются.

Изучите mapssdk_phys_magnet.vmf

phys_motor (ротор)
Объект, который пытается вращать целевой объект с определенной скоростью. Это можно представить как вал двигателя, соединенный напрямую с объектом. Подключенный к колесу, он будет пытаться его вращать подобно колесу автомобиля. Имеется также поле «величина нагрузки», которое отвечает за увеличение мощности. Ротор будет пытаться вращать объект с заданной скоростью, но если этот объект оказывает сопротивление (например, из-за столкновения), ротор будет увеличивать свою мощность, в соотвествии со значением величины нагрузки, для продолжения вращения объекта с необходимой скоростью. Значение «2» заставит ротор прилагать в два раза больше усилия, чем требуется для вращения прикреплённого объекта без сопротивления.

Изучите mapssdk_phys_motor.vmf

phys_ragdollmagnet (магнитное распятие)
Простое ограничение, которое притягивает к себе кукол. Это полезно для получения более достоверного падения трупа. Объект может притягиваться к точке или плашмя, то есть притягивается к прямой, а не к одной точке в пространстве. Это полезно для притягивания куклы к краю перил в любой точке вдоль края, а не к определённой точке.

Изучите mapssdk_phys_ragdollmagnet.vmf

phys_thruster (движитель/тяга)
Этот объект прикладывает усилиие к объекту вдоль указанной оси. Это прямой аналог реактивного двигателя. Объект имеет таймер, который позволяет проектировщику указать длительность, в течение которой движитель должен толкать целевой объект, а затем отключиться.

Изучите mapssdk_phys_thruster.vmf

phys_torque (стартер)
Аналогично phys_motor, этот объект применяет крутящий момент к другому объекту. Этот объект также имеет возможность игнорировать массу поворачиваемого объекта, а также встроенный таймер, который позволяет оказывать крутящий момент к прикрепленному объекту в течение заданного времени, отключая себя после этого.


Изучите mapssdk_phys_torque.vmf