Disable rigidbody on a specific gameobject using C# and Unity
I’m having trouble in my pinch code because it also grabs my player. Here is my code:
Every object must have a rigidbody that is set to USE GRAVITY so my player as well so that it will not go through my terrain . My script is grabs the nearest object that has a rigidbody. The problem is when I grab some object its always grab itself I mean my player. I’m using a leap motion to grab.
So how can I obtain that if my script detects that it is grabbing my player it will stop grabbing but instead grab the object?
Rigidbody
Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.
Submission failed
For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.
Description
Control of an object’s position through physics simulation.
Adding a Rigidbody component to an object will put its motion under the control of Unity’s physics engine. Even without adding any code, a Rigidbody object will be pulled downward by gravity and will react to collisions with incoming objects if the right Collider component is also present.
The Rigidbody also has a scripting API that lets you apply forces to the object and control it in a physically realistic way. For example, a car’s behaviour can be specified in terms of the forces applied by the wheels. Given this information, the physics engine can handle most other aspects of the car’s motion, so it will accelerate realistically and respond correctly to collisions.
In a script, the FixedUpdate function is recommended as the place to apply forces and change Rigidbody settings (as opposed to Update, which is used for most other frame update tasks). The reason for this is that physics updates are carried out in measured time steps that don’t coincide with the frame update. FixedUpdate is called immediately before each physics update and so any changes made there will be processed directly.
A common problem when starting out with Rigidbodies is that the game physics appears to run in «slow motion». This is actually due to the scale used for your models. The default gravity settings assume that one world unit corresponds to one metre of distance. With non-physical games, it doesn’t make much difference if your models are all 100 units long but when using physics, they will be treated as very large objects. If a large scale is used for objects that are supposed to be small, they will appear to fall very slowly — the physics engine thinks they are very large objects falling over very large distances. With this in mind, be sure to keep your objects more or less at their scale in real life (so a car should be about 4 units = 4 metres, for example).
Rigidbody
Rigidbodies enable your GameObjects to act under the control of physics. The Rigidbody can receive forces and torque to make your objects move in a realistic way. Any GameObject must contain a Rigidbody to be influenced by gravity, act under added forces via scripting, or interact with other objects through the NVIDIA PhysX physics engine.

Properties
| Property: | Function: |
|---|---|
| Mass | The mass of the object (in kilograms by default). |
| Drag | How much air resistance affects the object when moving from forces. 0 means no air resistance, and infinity makes the object stop moving immediately. |
| Angular Drag | How much air resistance affects the object when rotating from torque. 0 means no air resistance. Note that you cannot make the object stop rotating just by setting its Angular Drag to infinity. |
| Use Gravity | If enabled, the object is affected by gravity. |
| Is Kinematic | If enabled, the object will not be driven by the physics engine, and can only be manipulated by its Transform. This is useful for moving platforms or if you want to animate a Rigidbody that has a HingeJoint attached. |
| Interpolate | Try one of the options only if you are seeing jerkiness in your Rigidbody’s movement. |
| — None | No Interpolation is applied. |
| — Interpolate | Transform is smoothed based on the Transform of the previous frame. |
| — Extrapolate | Transform is smoothed based on the estimated Transform of the next frame. |
| Collision Detection | Used to prevent fast moving objects from passing through other objects without detecting collisions. |
| — Discrete | Use Discreet collision detection against all other colliders in the scene. Other colliders will use Discreet collision detection when testing for collision against it. Used for normal collisions (This is the default value). |
| — Continuous | Use Discrete collision detection against dynamic colliders (with a rigidbody) and continuous collision detection against static MeshColliders (without a rigidbody). Rigidbodies set to Continuous Dynamic will use continuous collision detection when testing for collision against this rigidbody. Other rigidbodies will use Discreet Collision detection. Used for objects which the Continuous Dynamic detection needs to collide with. (This has a big impact on physics performance, leave it set to Discrete, if you don’t have issues with collisions of fast objects) |
| — Continuous Dynamic | Use continuous collision detection against objects set to Continuous and Continuous Dynamic Collision. It will also use continuous collision detection against static MeshColliders (without a rigidbody). For all other colliders it uses discreet collision detection. Used for fast moving objects. |
| Constraints | Restrictions on the Rigidbody’s motion:- |
| — Freeze Position | Stops the Rigidbody moving in the world X, Y and Z axes selectively. |
| — Freeze Rotation | Stops the Rigidbody rotating around the local X, Y and Z axes selectively. |
Details
Rigidbodies allow your GameObjects to act under control of the physics engine. This opens the gateway to realistic collisions, varied types of joints, and other very cool behaviors. Manipulating your GameObjects by adding forces to a Rigidbody creates a very different feel and look than adjusting the Transform Component directly. Generally, you shouldn’t manipulate the Rigidbody and the Transform of the same GameObject — only one or the other.
The biggest difference between manipulating the Transform versus the Rigidbody is the use of forces. Rigidbodies can receive forces and torque, but Transforms cannot. Transforms can be translated and rotated, but this is not the same as using physics. You’ll notice the distinct difference when you try it for yourself. Adding forces/torque to the Rigidbody will actually change the object’s position and rotation of the Transform component. This is why you should only be using one or the other. Changing the Transform while using physics could cause problems with collisions and other calculations.
Rigidbodies must be explicitly added to your GameObject before they will be affected by the physics engine. You can add a Rigidbody to your selected object from Components->Physics->Rigidbody in the menu. Now your object is physics-ready; it will fall under gravity and can receive forces via scripting, but you may need to add a Collider or a Joint to get it to behave exactly how you want.
Parenting
When an object is under physics control, it moves semi-independently of the way its transform parents move. If you move any parents, they will pull the Rigidbody child along with them. However, the Rigidbodies will still fall down due to gravity and react to collision events.
Scripting
To control your Rigidbodies, you will primarily use scripts to add forces or torque. You do this by calling AddForce() and AddTorque() on the object’s Rigidbody. Remember that you shouldn’t be directly altering the object’s Transform when you are using physics.
Animation
For some situations, mainly creating ragdoll effects, it is neccessary to switch control of the object between animations and physics. For this purpose Rigidbodies can be marked isKinematic. While the Rigidbody is marked isKinematic, it will not be affected by collisions, forces, or any other part of the physics system. This means that you will have to control the object by manipulating the Transform component directly. Kinematic Rigidbodies will affect other objects, but they themselves will not be affected by physics. For example, Joints which are attached to Kinematic objects will constrain any other Rigidbodies attached to them and Kinematic Rigidbodies will affect other Rigidbodies through collisions.
Colliders
Colliders are another kind of component that must be added alongside the Rigidbody in order to allow collisions to occur. If two Rigidbodies bump into each other, the physics engine will not calculate a collision unless both objects also have a Collider attached. Collider-less Rigidbodies will simply pass through each other during physics simulation.
Colliders define the physical boundaries of a Rigidbody
Add a Collider with the Component->Physics menu. View the Component Reference page of any individual Collider for more specific information:
- Box Collider — primitive shape of a cube
- Sphere Collider — primitive shape of a sphere
- Capsule Collider — primitive shape of a capsule
- Mesh Collider — creates a collider from the object’s mesh, cannot collide with another Mesh Collider
- Wheel Collider — specifically for creating cars or other moving vehicles
- Terrain Collider — handles collision with Unity’s terrain system
Compound Colliders
Compound Colliders are combinations of primitive Colliders, collectively acting as a single Collider. They come in handy when you have a model that would be too complex or costly in terms of performance to simulate exactly, and want to simulate the collision of the shape in an optimal way using simple approximations. To create a Compound Collider, create child objects of your colliding object, then add a Collider component to each child object. This allows you to position, rotate, and scale each Collider easily and independently of one another. You can build your compound collider out of a number of primitive colliders and/or convex mesh colliders.
A real-world Compound Collider setup
In the above picture, the Gun Model GameObject has a Rigidbody attached, and multiple primitive Colliders as child GameObjects. When the Rigidbody parent is moved around by forces, the child Colliders move along with it. The primitive Colliders will collide with the environment’s Mesh Collider, and the parent Rigidbody will alter the way it moves based on forces being applied to it and how its child Colliders interact with other Colliders in the Scene.
Mesh Colliders can’t normally collide with each other. If a Mesh Collider is marked as Convex, then it can collide with another Mesh Collider. The typical solution is to use primitive Colliders for any objects that move, and Mesh Colliders for static background objects.
Continuous Collision Detection
Continuous collision detection is a feature to prevent fast-moving colliders from passing each other. This may happen when using normal (Discrete) collision detection, when an object is one side of a collider in one frame, and already passed the collider in the next frame. To solve this, you can enable continuous collision detection on the rigidbody of the fast-moving object. Set the collision detection mode to Continuous to prevent the rigidbody from passing through any static (ie, non-rigidbody) MeshColliders. Set it to Continuous Dynamic to also prevent the rigidbody from passing through any other supported rigidbodies with collision detection mode set to Continuous or Continuous Dynamic. Continuous collision detection is supported for Box-, Sphere- and CapsuleColliders. Note that continuous collision detection is intended as a safety net to catch collisions in cases where objects would otherwise pass through each other, but will not deliver physically accurate collision results, so you might still consider decreasing the fixed Time step value in the TimeManager inspector to make the simulation more precise, if you run into problems with fast moving objects.
Use the right size
The size of the your GameObject’s mesh is much more important than the mass of the Rigidbody. If you find that your Rigidbody is not behaving exactly how you expect — it moves slowly, floats, or doesn’t collide correctly — consider adjusting the scale of your mesh asset. Unity’s default unit scale is 1 unit = 1 meter, so the scale of your imported mesh is maintained, and applied to physics calculations. For example, a crumbling skyscraper is going to fall apart very differently than a tower made of toy blocks, so objects of different sizes should be modeled to accurate scale.
If you are modeling a human make sure the model is around 2 meters tall in Unity. To check if your object has the right size compare it to the default cube. You can create a cube using GameObject > 3D Object > Cube. The cube’s height will be exactly 1 meter, so your human should be twice as tall.
If you aren’t able to adjust the mesh itself, you can change the uniform scale of a particular mesh asset by selecting it in Project View and choosing Assets->Import Settings… from the menu. Here, you can change the scale and re-import your mesh.
If your game requires that your GameObject needs to be instantiated at different scales, it is okay to adjust the values of your Transform’s scale axes. The downside is that the physics simulation must do more work at the time the object is instantiated, and could cause a performance drop in your game. This isn’t a terrible loss, but it is not as efficient as finalizing your scale with the other two options. Also keep in mind that non-uniform scales can create undesirable behaviors when Parenting is used. For these reasons it is always optimal to create your object at the correct scale in your modeling application.
Rigidbody
Жесткие тела позволяют вашим GameObjects основным объектам в сценах Unity, которые могут представлять персонажей, реквизит , пейзажи, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь , чтобы действовать под контролем физики. Rigidbody может воспринимать силы и крутящий момент, чтобы ваши объекты двигались реалистично. Любой GameObject должен содержать Rigidbody, чтобы на него воздействовала гравитация, чтобы он действовал под действием дополнительных сил с помощью сценариев или взаимодействовал с другими объектами через физический движок NVIDIA PhysX Система, моделирующая аспекты физических систем, чтобы объекты могли правильно ускоряться и подвергаться воздействию столкновений, гравитации и других сил. Подробнее
См. в Словарь .

Свойства
| Свойства: | Функции: |
|---|---|
| Mass | Масса объекта (по умолчанию в килограммах). |
| Drag | Насколько сопротивление воздуха влияет на объект при движении от сил. 0 означает отсутствие сопротивления воздуха, а бесконечность заставляет объект немедленно останавливаться.. |
| Angular Drag | Насколько сопротивление воздуха влияет на объект при вращении от крутящего момента. 0 означает отсутствие сопротивления воздуха. Обратите внимание, что вы не можете остановить вращение объекта, просто установив его угловое перетаскивание на бесконечность.. |
| Use Gravity | Если включено, на объект действует гравитация. |
| Is Kinematic | Если этот параметр включен, физический движок не будет управлять объектом, и им можно будет манипулировать только с помощью преобразования. Это полезно для движущихся платформ или если вы хотите анимировать Rigidbody, к которому прикреплено HingeJoint. |
| Interpolate Процесс вычисления значений между двумя определенными значениями. Используется в анимации (между ключевыми кадрами), физике (между физическими временными шагами) и многопользовательской игре (между сетевыми обновлениями). См. в Словарь |
Попробуйте один из вариантов, только если вы видите рывки в движении вашего Rigidbody. |
| — None | Интерполяция не применяется. |
| — Interpolate | Преобразование сглаживается на основе преобразования предыдущего кадра.. |
| — Extrapolate Процесс сохранения нескольких последних известных значений и их использования для прогнозирования будущих значений. Используется в анимации, физике и мультиплеере. See in Словарь |
Преобразование сглаживается на основе предполагаемого преобразования следующего кадра.. |
| Collision Detection Автоматический процесс, выполняемый Unity, который определяет, вступал ли движущийся GameObject с Rigidbody и компонентом коллайдера в контакт с какими-либо другими коллайдерами. Подробнее См. в Словарь |
Используется для предотвращения прохождения быстро движущихся объектов через другие объекты без обнаружения столкновений Столкновение происходит, когда физический движок обнаруживает, что объект коллайдеры двух GameObjects соприкасаются или перекрываются, когда хотя бы один из них имеет компонент Rigidbody и находится в движении. More info See in Словарь . |
| — Discrete | Используйте дискретное обнаружение столкновений со всеми другими коллайдерами в Сцене Сцена содержит среду и меню вашего игра. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее См. в Словарь . Другие коллайдеры будут использовать дискретное обнаружение столкновений при проверке на столкновение с ним. Используется для обычных столкновений (это значение по умолчанию). |
| — Continuous | Используйте дискретное обнаружение столкновений с динамическими коллайдерами (с жестким телом) и основанное на развертке непрерывное обнаружение столкновений метод обнаружения столкновений, который вычисляет и разрешает коллизий на протяжении всего шага физического моделирования. Это может предотвратить туннелирование быстро движущихся объектов сквозь стены во время этапа моделирования. Подробнее См. в Словарь против статических коллайдеров (без Rigidbody). Твердые тела, для которых установлено значение Continuous Dynamic, будут использовать непрерывное обнаружение столкновений при тестировании на столкновение с этим твердым телом. Другие твердые тела будут использовать обнаружение дискретных столкновений. Используется для объектов, с которыми необходимо столкнуться при обнаружении Continuous Dynamic. (Это сильно влияет на производительность физики, оставьте значение Discrete, если у вас нет проблем со столкновениями быстрых объектов) |
| — Continuous Dynamic | Используйте непрерывное обнаружение столкновений на основе развертки для объектов GameOject, для которых задано столкновение Continuous и Continuous Dynamic. Он также будет использовать непрерывное обнаружение столкновений со статическими коллайдерами (без Rigidbody). Для всех других коллайдеров используется дискретное обнаружение столкновений. Используется для быстро движущихся объектов. |
| — Continuous Speculative | Используйте спекулятивное непрерывное обнаружение столкновений Метод обнаружения столкновений, который расширяет широкофазную AABB движущихся объектов в соответствии с их скоростями. Это включает поддержку таких эффектов, как повороты. Подробнее См. в Словарь о твердых телах и коллайдерах. Это также единственный режим ПЗС, в котором можно задавать кинематические тела. Этот метод, как правило, дешевле, чем непрерывное обнаружение столкновений на основе развертки. |
| Constraints Настройки компонентов соединения, которые ограничивают движение или вращение. Тип и количество ограничений зависит от типа соединения. Подробнее См. в Словарь |
Ограничения на движение твердого тела:- |
| — Freeze Position | Выборочно останавливает твердое тело, перемещающееся по мировым осям X, Y и Z. |
| — Freeze Rotation | Выборочно останавливает вращение Rigidbody вокруг локальных осей X, Y и Z. |
Подробнее
Твердые тела позволяют вашим игровым объектам действовать под управлением физического движка. Это открывает путь к поведению, такому как реалистичные столкновения и различные типы соединений физический компонент, обеспечивающий динамическую связь между компонентами Rigidbody, обычно позволяя некоторую степень движения, такие как шарнир. Подробнее
См. в Словарь . Манипулирование вашими игровыми объектами путем добавления сил к Rigidbody создает совсем другое ощущение и внешний вид, чем настройка Transform Component функциональной части GameObject . GameObject может содержать любое количество компонентов. В Unity есть много встроенных компонентов, и вы можете создавать свои собственные, написав сценарии, которые наследуются от MonoBehaviour. Подробнее
См. непосредственно в Словарь . Как правило, вы не должны манипулировать Rigidbody и Transform одного и того же GameObject — только тем или другим.
Самая большая разница между манипулированием Transform и Rigidbody заключается в использовании сил. Твердые тела могут воспринимать силы и крутящий момент, а преобразования — нет. Преобразования можно перемещать и вращать, но это не то же самое, что использовать физику. Вы заметите явную разницу, когда попробуете это на себе. Добавление силы/крутящего момента к Rigidbody фактически изменит положение объекта и вращение компонента Transform Компонент Transform определяет положение, вращение , и Масштаб каждого объекта в сцене. Каждый GameObject имеет Transform. Подробнее
См. в Словарь . Вот почему вы должны использовать только один или другой. Изменение преобразования при использовании физики может вызвать проблемы с коллизиями и другими вычислениями.
Твердые тела должны быть явно добавлены в ваш GameObject, прежде чем на них повлияет физический движок. Вы можете добавить Rigidbody к выбранному объекту из меню Components->Physics->Rigidbody. Теперь ваш объект готов к физике; он будет падать под действием силы тяжести и может получать силы с помощью скрипта, но вам может потребоваться добавить коллайдер невидимую форму, которая используется для обрабатывать физические столкновения для объекта. Коллайдер не обязательно должен быть точно такой же формы, как сетка объекта — грубое приближение часто бывает более эффективным и неразличимым в игровом процессе. Подробнее
Посмотрите в Словарь или в Джойнте, чтобы заставить его вести себя именно так, как вы хотите.
Воспитание детей
Когда объект находится под контролем физики, он движется полунезависимо от того, как двигаются его родители-трансформеры. Если вы переместите каких-либо родителей, они потянут за собой дочернего элемента Rigidbody. Однако твердые тела по-прежнему будут падать под действием силы тяжести и реагировать на события столкновения.
Сценарий
Для управления вашими твердыми телами вы в основном будете использовать скрипты фрагмент кода, позволяющий создавать собственные компоненты, запускать игровые события, изменяйте свойства компонентов с течением времени и реагируйте на действия пользователя любым удобным для вас способом. Подробнее
См. Словарь , чтобы добавить усилия или крутящий момент. Вы делаете это, вызывая AddForce() и AddTorque() на Rigidbody объекта. Помните, что вы не должны напрямую изменять Transform объекта, когда используете физику.
Анимация
Для некоторых ситуаций, в основном для создания эффектов рэгдолла, необходимо переключить управление объектом между анимацией и физикой. Для этого твердые тела можно пометить isKinematic. Пока Rigidbody помечен как isKinematic, на него не будут влиять столкновения, силы или любая другая часть физической системы. Это означает, что вам придется управлять объектом, напрямую управляя компонентом Transform. Кинематические твердые тела будут влиять на другие объекты, но на них самих физика не повлияет. Например, шарниры, прикрепленные к кинематическим объектам, будут ограничивать любые другие твердотельные тела, прикрепленные к ним, а кинематические твердые тела будут влиять на другие твердые тела посредством столкновений.
Коллайдеры
Коллайдеры — это еще один тип компонентов, которые необходимо добавить вместе с Rigidbody, чтобы разрешить возникновение столкновений. Если два твердых тела столкнутся друг с другом, физический движок не будет рассчитывать столкновение, если к обоим объектам также не подключен коллайдер. Безколлайдерные твердые тела будут просто проходить сквозь друг друга во время физического моделирования.
Коллайдеры физических структур Rigidbody
Добавьте коллайдер с помощью меню Компонент->Физика. Просмотрите страницу с описанием компонентов любого отдельного коллайдера для получения более подробной информации:
- Box Collider Компонент коллайдера в форме куба, который обрабатывает коллизии игровых объектов, таких как игральные кости. и кубики льда. Подробнее
См. в Словарь — примитивная форма куба - Сферический коллайдер Компонент-коллайдер в форме сферы, который обрабатывает столкновения игровых объектов, например мячей. или другие вещи, которые можно грубо представить как сферу для целей физики. Подробнее
См. в Словарь — примитивная форма сферы - Капсульный коллайдер Компонент-коллайдер в форме капсулы, который обрабатывает коллизии игровых объектов, таких как бочки. и конечности персонажа. Подробнее
См. в Словарь — примитивная форма капсулы - Сетевой коллайдер Компонент коллайдера произвольной формы, который принимает ссылку на сетку для определения форму его поверхности столкновения. Подробнее
См. в Словарь — создает коллайдер из mesh Основной графический примитив Unity. Меши составляют большую часть ваших 3D-миров. Unity поддерживает триангулированные или четырехугольные полигональные сетки. Поверхности Nurbs, Nurms, Subdiv должны быть преобразованы в полигоны. Подробнее
См. в Словарь , не может конфликтовать с другим Mesh Collider - Колесный коллайдер Специальный коллайдер для наземных транспортных средств. Он имеет встроенное обнаружение столкновений, физику колес и модель трения шин на основе проскальзывания. Его можно использовать для объектов, отличных от колес, но он специально разработан для транспортных средств с колесами. Подробнее
См. в Словарь – специально для создания автомобилей или других движущихся транспортных средств - Terrain Collider Компонент коллайдера в форме ландшафта, который обрабатывает столкновения для поверхности столкновения с той же формы, что и объект Terrain, к которому он прикреплен. Подробнее
См. в Словарь — обрабатывает коллизии с классом Unity terrain Пейзаж в вашей сцене. Игровой объект Terrain добавляет в вашу сцену большую плоскую плоскость, и вы можете использовать окно Terrain Inspector для создания подробного ландшафта. Подробнее
См. в системе Словарь
Составные коллайдеры
Составные коллайдеры — это комбинации примитивных коллайдеров, совместно действующих как единое жесткое тело. Они пригодятся, когда у вас есть модель, которая была бы слишком сложной или дорогостоящей с точки зрения производительности для точного моделирования, и вы хотите оптимальным образом смоделировать столкновение формы, используя простые приближения. Чтобы создать составной коллайдер, создайте дочерние объекты вашего сталкивающегося объекта, а затем добавьте компонент коллайдера к каждому дочернему объекту. Это позволяет легко и независимо друг от друга позиционировать, вращать и масштабировать каждый коллайдер. Вы можете создать составной коллайдер из нескольких примитивных коллайдеров и/или коллайдеров с выпуклой сеткой.
Реальная установка составного коллайдера
На приведенном выше рисунке к игровому объекту Gun Model прикреплено твердое тело и несколько примитивных коллайдеров в качестве дочерних игровых объектов. Когда родитель Rigidbody перемещается силами, дочерние коллайдеры движутся вместе с ним. Примитивные коллайдеры будут сталкиваться с сетчатым коллайдером среды, а родительское Rigidbody будет изменять способ своего движения в зависимости от приложенных к нему сил и того, как его дочерние коллайдеры взаимодействуют с другими коллайдерами в сцене.
Сетчатые коллайдеры обычно не могут сталкиваться друг с другом. Если Mesh Collider помечен как Выпуклый, он может столкнуться с другим Mesh Collider. Типичным решением является использование примитивных коллайдеров для любых движущихся объектов и сетчатых коллайдеров для статических фоновых объектов.
Примечание. Составные коллайдеры возвращают отдельные обратные вызовы для каждой пары столкновений коллайдеров при использовании обратных вызовов столкновений.
Непрерывное обнаружение столкновений
Непрерывное обнаружение столкновений — это функция, предотвращающая пересечение быстро движущихся коллайдеров друг друга. Это может произойти при использовании обычного (Дискретного) обнаружения столкновений, когда объект находится по одну сторону коллайдера в одном кадре, а уже прошел коллайдер в следующем кадре. Чтобы решить эту проблему, вы можете включить непрерывное обнаружение столкновений с твердым телом быстро движущегося объекта. Установите режим обнаружения столкновений на Continuous, чтобы твердое тело не проходило через любые статические (т. е. нежесткие) MeshColliders. Установите его на Continuous Dynamic, чтобы твердое тело также не проходило через любые другие поддерживаемые твердые тела с режимом обнаружения столкновений, установленным на Continuous или Continuous Dynamic. Непрерывное обнаружение столкновений поддерживается для Box-, Sphere- и CapsuleColliders. Обратите внимание, что непрерывное обнаружение столкновений предназначено в качестве системы безопасности для обнаружения столкновений в случаях, когда объекты в противном случае проходили бы друг через друга, но не давали бы физически точных результатов столкновения, поэтому вы все равно можете рассмотреть возможность уменьшения фиксированного значения шага времени в TimeManager инспектор Окно Unity, в котором отображается информация о текущем выбранном игровом объекте, активе или настройках проекта, что позволяет вам просматривать и редактировать значения. Дополнительная информация
См. в Словарь , чтобы сделать моделирование более точным, если у вас возникнут проблемы с быстро движущиеся объекты.
Используйте правильный размер
Размер сетки вашего GameObject гораздо важнее, чем масса Rigidbody. Если вы обнаружите, что ваше Rigidbody ведет себя не совсем так, как вы ожидаете — оно движется медленно, плавает или неправильно сталкивается — рассмотрите возможность настройки масштаба вашего меш-ассета. Масштаб единиц измерения Unity по умолчанию равен 1 единице = 1 метру, поэтому масштаб импортируемой сетки сохраняется и применяется к физическим расчетам. Например, рушащийся небоскреб развалится совсем не так, как башня из игрушечных кубиков, поэтому объекты разных размеров необходимо моделировать в точном масштабе.
Если вы моделируете человека, убедитесь, что высота модели в Unity составляет около 2 метров. Чтобы проверить, имеет ли ваш объект правильный размер, сравните его с кубом по умолчанию. Вы можете создать куб, используя GameObject > 3D Object > Cube. Высота куба будет ровно 1 метр, поэтому ваш человек должен быть в два раза выше.
Если вы не можете настроить саму сетку, вы можете изменить единый масштаб определенного ресурса сетки, выбрав его в Просмотре проекта и выбрав Ресурсы->Настройки импорта… из меню. Здесь вы можете изменить масштаб и повторно импортировать сетку.
Если ваша игра требует, чтобы ваш GameObject создавался в разных масштабах, можно настроить значения осей масштабирования вашего Transform. Недостатком является то, что симуляция физики должна выполнять больше работы во время создания экземпляра объекта, что может привести к падению производительности вашей игры. Это не ужасная потеря, но она не так эффективна, как завершение вашей шкалы двумя другими вариантами. Также имейте в виду, что неоднородные шкалы могут привести к нежелательному поведению при использовании Parenting. По этим причинам всегда оптимально создавать объект в правильном масштабе в приложении для моделирования.