unity отключить rigidbody через скрипт

Отключить RigidBody2D для определенных объектов

Отключить физическое взаимодействие определенных объектов в 2D
Как пройти определенный объект насквозь другим объектом, не отключая их физику и сollider, чтобы.

Как отключить условие if при определенных условиях
Подскажите. Есть несколько условий IF. Как отключить некоторые условия в зависимости от выбора или.

Отображение определенных филиалов для определенных пользователей в сводной таблице
Здравствуйте! Есть сводная таблица в которой есть колонка «Филиал». Мне нужно чтоб для.

Решение

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Программа для слежением появлением определенных слов на определенных сайтах
Все привет! Мне необходимо быть в курсе дел по одному вопросу, но нет времени постоянно следить.

unity отключить rigidbody через скрипт. tick. unity отключить rigidbody через скрипт фото. unity отключить rigidbody через скрипт-tick. картинка unity отключить rigidbody через скрипт. картинка tick. Отключить физическое взаимодействие определенных объектов в 2DКак пройти определенный объект насквозь другим объектом, не отключая их физику и сollider, чтобы.BindingSourse, выборка только определённых объектов
Допустим я в качестве источника данных DataGrid устанавливаю List. Можно ли сделать так чтобы в.

Редактирование определенных полей коллекции объектов
Добрый день! Есть профиль юзера с уникальным UserId. Каждому юзеру соответствует разное количество.

Динамическое создание объектов и присвоение им определенных функций
Как сделать, так чтобы динамически создавались, скажем, 4 optionButton’a и после нажатия на первый.

Access 2007: отключить показ даты создания/изменения объектов
Как в основном окне Access’a отключить показ даты создания/изменения объектов?

Источник

Погружение в скрипты игрового движка Unity3d, ч.1

Игровой объект

Создание нового игрового объекта с именем MyObject.
Созданный объект будет доступен по ссылку myObject.

Поиск объекта по его имени.

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

Возвращает список всех объектов с указанным тегом:

Проверка на наличие у объекта требуемого тега. Возвращает true, если у указанного объекта имеется тег MyTag:

Уничтожение объекта через минуту, после его создания:

Возвращает компонент component, привязанный к объекту GameObject, либо null, если объект не содержит данного компонента. Может использоваться, например, для доступа к другим скриптам, привязанным к объекту.

Возвращает все имеющиеся у объекта компоненты типа componentType.

Привязать компонент myComponent к объекту GameObject и получить ссылку на него.

Положение игрового объекта

Свойство transform объекта GameObject содержит в себе данные о положении объекта в игровом мире.

Возвращает глобальные координаты объекта в игровом мире. Возвращаемая величина имеет тип Vector3, который представляет из себя список из 3 координат — x, y и z:

Переместить объект в точку 0, 10, 0 игрового мира.

Тоже самое, что и в случае глобальных координат, но с локальными. Локальные координаты расситываются относительно родительского объекта. В случае отсутствия родительского объекта локальные координаты совпадают с глобальными:

Поворот объекта в углах Эйлера. Метод также возвращает координаты в виде объекта Vector3:

Тоже самое, что и предыдущий пример, но поворот объекта рассчитывается относительно родительского объекта:

Текущий угол поворота объекта, основанный на кватернионах. Возвращает объект типа Quaternion.

Текущий поворот объекта, основанный на кватернионах, но относительно родительского объекта:

Сброс угла поворота объекта:

Вращаем наш объект в указанную сторону со скоростью 1 градус в секунду. Принимает в качестве координат объект типа Vector3. Метод deltaTime объекта Time содержит время в секундах, затраченное на выполнение предыдущего кадра:

Тоже самое, что и предыдущий пример, но вращение объекта относительно координат родителя:

Перемещаем наш объект в указанном направлении со скоростью 1 юнит в секунду. Также принимает в качестве координат объект класса Vector3:

Физические свойства игрового объекта

Метод rigidbody объекта GameObject хранит в себе его физические свойства. Прежде, чем использовать метод rigidbody, его необходимо добавить к игровому объекту.

Получаем/задаем вектор скорости объекта:

Сила противодействия объекта. Может использоваться для замедления скорости, в среде с отсутствующей силой трения. Наиболее часто используется для замедления падающих объектов, например при создании парашюта. Принимает в качестве параметра целое число:

Задание массы объекту. Рекомендуется использовать массу в пределах от 0.1 до 10. Использование слишком больших значений может привести к непредсказуемым результатам при расчете физики:

Влияние на объект гравитации. Принимает в качестве параметра булево значение. Позволяет отключить влияние гравитации на отдельные объекты:

Влияние физики на игровой объект. Позволяет отключить частично, либо полностью влияние физических законов на объект:

Запрет на вращение объекта. Наиболее часто используется, когда необходимо сохранить определенный угол поворота даже после столкновения с другими объектами:

Указание координат точки центра массы объекта. Применяет координаты в виде уже знакомого нам объекта Vector3.

Использовать ли для объекта обнаружение столкновений с другими объектами. Можно выключить, тогда ваш объект будет игнорировать любые столкновения:

Режим определения столкновений между объектами. Можно указать несколько разных режимов:
CollisionDetectionMode.ContinuousDynamic для быстро движущихся объектов;
CollisionDetectionMode.Continuous для столкновений с быстро движущимися объектами;
CollisionDetectionMode.Discrete (по умолчанию) для обычных столкновений;
В случае отсутствия проблем с определением столкновений рекомендуется использовать свойство по умолчанию.

Задать плотность объекта:

Применить импульс к объекту с указанным вектором. В результате применения импульса объект придет в движение пропорционально силе импульса.

Применить импульс к объекту с вектором в его (объекта) системы координат:

Добавить объекту крутящий момент. Применение данного метода заставит объект вращаться вокруг своего центра масс GameObject.rigidbody.centerOfMass.

Тоже самое, что и предыдущий пример, но относительно координат объекта:

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

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

Заставить объект «уснуть», и запретить дальнейший расчет физических показателей для него:

Проверить «заснул» ли объект:

«Разбудить» объект для возможности дальнейшего применения влияния физики на него:

Трассировка лучей

Один из самых часто используемых в разработке на Unity3D объект, это Ray. Данный объект позволяет выпустить луч из указанной точки, в указанном направлении, и вернуть некоторые свойства объектов, которых он смог достичь.

Создаем объект класса RaycastHit, который содержит информацию об объекте, с которым столкнулся луч:

Отправляем луч длиной в 50 юнитов из позиции rayPosition в направлении rayVector, и заносим объект, с которым столкнулся луч в переменную hit:

Получаем дистанцию до объекта, с которым столкнулся луч. Дистанция не может быть больше, чем протяженность луча:

Иногда бывает необходимо получить имя объекта, с которым произошло столкновение луча. Наиболее простой способ это сделать:

Для получения тега объекта используем следующий способ:

Unity3D содержит еще множество различных методов и объектов, полезных и не очень. К сожалению полный их обзор увеличил бы и без того объемную статью, поэтому я постараюсь рассказать об остальном более подробно в будущем, если мне представится такая возможность. Я бы хотел пожелать опытным разработчикам побольше интересных проектов, а начинающим — успехов и интересных открытий. Спасибо, что уделили внимание данной статье.

Источник

Unity скрипт контроль физики Rigidbody (Твердые тела)

Properties, свойства

Свойство: Функция:

Mass
Масса объекта (в килограммах по умолчанию).

Drag
Какое сопротивление воздуха влияет на объект при движении от силы. 0 означает отсутствие сопротивления воздуха, а бесконечность заставляет объект немедленно прекращать движение.

Angular Drag
Какое сопротивление воздуха влияет на объект при вращении от крутящего момента. 0 означает отсутствие сопротивления воздуха. Обратите внимание, что вы не можете заставить объект перестать вращаться, просто установив его Angular Drag в бесконечность.

Use Gravity
Если включено, на объект влияет гравитация.

Interpolate
Попробуйте один из вариантов, только если вы видите рывки в движении вашего Rigidbody.
— None Интерполяция не применяется.
— Interpolate Преобразование сглаживается на основе преобразования предыдущего кадра.
— Extrapolate Преобразование сглаживается на основе оцененного преобразования следующего кадра.

Collision Detection
Используется для предотвращения прохождения быстро движущихся объектов через другие объекты без обнаружения столкновений
.
— Discrete
Используйте дискретное обнаружение столкновений со всеми другими коллайдерами в сцене
. Другие коллайдеры будут использовать дискретное обнаружение столкновений при тестировании на столкновение с ним. Используется для нормальных столкновений (это значение по умолчанию).

— Continuous Dynamic
Используйте непрерывное обнаружение столкновений на основе развертки для объектов GameOject, для которых установлено постоянное и непрерывное динамическое столкновение. Он также будет использовать непрерывное обнаружение столкновений со статическими коллайдерами (без твердого тела). Для всех других коллайдеров используется дискретное обнаружение столкновений. Используется для быстро движущихся объектов.

— Continuous Speculative
Использовать спекулятивное непрерывное обнаружение
обнаружения против твердых тел и коллайдеров. Это также единственный режим CCD, в котором вы можете устанавливать кинематические тела. Этот метод имеет тенденцию быть менее дорогим, чем непрерывное обнаружение столкновений на основе развертки.

— Freeze Position
Выборочно останавливает твердое тело, движущееся по осям X, Y и Z.

— Freeze Rotation
Выборочно останавливает твердое тело, вращающееся вокруг локальных осей X, Y и Z.

Источник

Unity как сбросить все ускорения с Rigit Body

пока что выхожу таким костылем :

Уточню: Если игра стоит на паузе, но есть место где мы вызываем ApplyForce а в другом месте мы сбрасываем все ускорения через

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

Я точно не знаю Как именно в Unity, но по логике надо узнать в одном кадре три компоненты приложенной силы и момента силы, а затем приложить их в апдейте физике с отрицательным знаком.

FDsagizi
> b.angularVelocity = Vector3.zero;
> b.velocity = Vector3.zero;
b.angularVelocity = (-1)*Vector3.zero;
b.velocity = (-1)*Vector3.zero;
ну короче точно такое же количество ускорения но в противоположную сторону тогда равнодействующая равна ноль

Rikk
> b.angularVelocity = (-1)*Vector3.zero;
> b.velocity = (-1)*Vector3.zero;

уточнил вопрос в главном посте ( это не про это )

сбросить «ускорения» нельзя. Т.к. они не хранятся. Хранятся скорости.
Если тело ускоряется, значит кто-то прикладывает силу, что-то типа «Constant Force».

> но есть место где мы вызываем ApplyForce
Несмотря на паузу?

rcsim
> сбросить «ускорения» нельзя. Т.к. они не хранятся. Хранятся скорости.

Ну да, речь идет про скорости которые есть в объекте
которые при b.velocity = Vector3.zero должны обнуляться

FDsagizi
> Ну да, речь идет про скорости которые есть в объекте
> которые при b.velocity = Vector3.zero должны обнуляться

Velocity ― скорость. Почему при корректировке скорости должны обнуляться ускорения?

Не понял ничего. Задам уточняющий вопрос: при паузе, «вы»
> но есть место где мы вызываем ApplyForce
зачем это делаете? Я бы не стал.

p.s. С юнити мало знаком, кажется там Physx, но нижеследующее действует и для других физдвигов:

При паузе (как правило) перестают обновлять физдвиг, но продолжают обновлять рендер.
И даже если не вызывать physicsWorld.update(), но вызывать rigidBody.ApplyForce(),
то это приведет к аккумулированию этих сил (там просто суммируются вектора) в самом теле, без всяких (имхо) Unitiy.

alexzzzz
> Velocity ― скорость. Почему при корректировке скорости должны обнуляться
> ускорения?
потому что
ускорение = [скорость2-скорость1] / [t2-t1]
a=dV/dt
скажем промежуток одна секунда 60кадров за секунду и на промежутке меняется скорость
значит можно скорости так подобрать что ускорение будет ноль

скажем сейчас скорость1=5 метров в секунду а через секунду скорость2=10метров в секунду
тогда ускорение=(10-5) /(одна секунда)= 5 метров за секунду в квадрате
но если скорость1=5 и скорость2=5 то ускорение=ноль хотя движение при скорости=5

Проблема уже обсуждалась и решалась AddForce(-velocity)

просто выдели объект и справа настройки отключи is gravity
или гравитация=0 is gravity=0
заодно включи is trigger управления программой(скриптами) и в программах не пиши формулы ускорения а пиши только формулы скорости
запилим супер на юнити как виртекса дергает в ванне током

foxes
> Проблема уже обсуждалась и решалась AddForce(-velocity)

Интересный вариант, надо попробовать

Если у вас объект ускоряется, то это значит что у вас в коде засела логическая ошибка и вы постоянно прикладываете к объекту силу. Я думаю, что просто вы слабо понимаете физику, отсюда и проблема.

Источник

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.

unity отключить rigidbody через скрипт. Inspector Rigidbody. unity отключить rigidbody через скрипт фото. unity отключить rigidbody через скрипт-Inspector Rigidbody. картинка unity отключить rigidbody через скрипт. картинка Inspector Rigidbody. Отключить физическое взаимодействие определенных объектов в 2DКак пройти определенный объект насквозь другим объектом, не отключая их физику и сollider, чтобы.

Свойства

Свойство:Функция:
MassThe mass of the object (in kilograms by default).
DragКакое воздушное сопротивление оказывается на объект пока он перемещается под воздействием этих сил. 0 означает отсутствие сопротивления, а бесконечность (infinity) тут же прекращает перемещение объекта.
Angular DragКакое воздушное сопротивление оказывается на объект пока он вращается под воздействием силы вращения. 0 означает отсутствие сопротивления. Учтите что вы не можете остановить вращение объекта путём установки его углового сопротивления (Angular Drag) в бесконечное (infinity) положение.
Use GravityПри включении на объект действует гравитация.
Is KinematicIf 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Попробуйте одну из опций если вы замечаете тряску в перемещении своего твёрдого тела.
NoneНе применено никакой интерполяции.
InterpolateСглаживание транформации основано на трансформации из предыдущего кадра.
ExtrapolateСглаживание трансформации основано на приблизительной трансформации следующего кадра.
Collision DetectionИспользуется для предотвращения проникновения быстро перемещающихся объектов сквозь другие объекты без определения столкновений.
DiscreteНа всех остальных коллайдерах сцены используйте осторожное (Discreet) обнаружение столкновений. Другие коллайдеры будут использовать осторожное обнаружение столкновений при проверке на столкновения против них. Используется для нормальных столкновений (стандартное значение).
ContinuousИспользуйте осторожное обнаружение столкновений против динамических коллайдеров (с твёрдыми телами) и непрерывное обнаружение столкновений против статичных меш коллайдеров (без твёрдых тел). Твёрдые тела установленные как непрерывные динамические (Continuous Dynamic) будут использовать непрерывное обнаружение столкновений при тестировании на столкновения против этого твёрдого тела. Другие твёрдые тела будут использовать осторожное обнаружение столкновений. Используется для объектов, с которыми нужно столкнуться при помощи динамического обнаружения столкновений. Всё это оказывает большое влияние на физическую производительность, поэтому оставьте данное значение установленным в Discrete, если не испытываете проблем со столкновением быстро движущихся объектов.
Continuous DynamicИспользуйте непрерывное обнаружение столкновений против объектов настроенных на непрерывное и непрерывное динамическое столкновение. Также будет использоваться непрерывное обнаружение столкновений против статичных меш коллайдеров (без твёрдых тел). Для всех остальных коллайдеров будет использоваться осторожное обнаружение столкновений. Используется для быстро движущихся объектов.
ConstraintsОграничения движения твёрдого тела:-
Freeze PositionВыборочно останавливает перемещение твёрдого тела по осям X, Y и Z.
Freeze RotationВыборочно останавливает вращение твёрдого тела по осям X, Y и Z.

Детали

Наибольшее отличие между управлением трансформациями и твёрдыми телами заключается в использовании сил. Твёрдые тела могут управляться силами и вращением, трансформации же не могут. Трансформации можно перемещать и вращать, но это не то же самое, что и использование физики. Вы заметите разницу, когда решите сами испробовать это на деле. Добавление силы/вращения к твёрдому телу позволит изменить позицию и вращение компонента трансформаций (Transform) объекта. Вот почему вам нужно использовать только один из них. Изменение трансформаций при использовании физики может создать проблемы столкновениях и других вычислениях.

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.

Наследование

Когда объект находится под управлением физики, он перемещается частично независимо от своих родителей. Если вы переместите одного из родителей, они потянут за собой Rigidbody потомков. Однако, твёрдые тела также будут падать вниз под воздействием силы тяжести и реагировать на события столкновений.

Скриптинг

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.

Анимация

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.

Коллайдеры

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

unity отключить rigidbody через скрипт. RigidbodyandCollider. unity отключить rigidbody через скрипт фото. unity отключить rigidbody через скрипт-RigidbodyandCollider. картинка unity отключить rigidbody через скрипт. картинка RigidbodyandCollider. Отключить физическое взаимодействие определенных объектов в 2DКак пройти определенный объект насквозь другим объектом, не отключая их физику и сollider, чтобы.коллайдеры определяют физические границы твёрдого тела

Add a Collider with the Component->Physics menu. View the Component Reference page of any individual Collider for more specific information:

Составные коллайдеры

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.

unity отключить rigidbody через скрипт. CompoundCollider. unity отключить rigidbody через скрипт фото. unity отключить rigidbody через скрипт-CompoundCollider. картинка unity отключить rigidbody через скрипт. картинка CompoundCollider. Отключить физическое взаимодействие определенных объектов в 2DКак пройти определенный объект насквозь другим объектом, не отключая их физику и сollider, чтобы.Настройка составного коллайдера реального мира

На картинке сверху, игровой объект Gun Model с назначенным твёрдым телом и несколькими примитивными коллайдерами в качестве потомков игрового объекта. При движении Rigidbody родителя под воздействием сил, потомки коллайдеры будут двигаться вместе с ним в том же направлении. Примитивные коллайдеры будут сталкиваться с меш коллайдерами окружающей среды, и родительский Rigidbody изменит способ своего перемещения, основываясь на силах, применённых к нему и том, как его потомки коллайдеры взаимодействуют с другими коллайдерами в сцене.

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 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. Непрерывное обнаружение столкновений поддерживается для Box-, Sphere- и Capsule коллайдеров. Учтите, что непрерывное обнаружение столкновений служит в качестве системы поддержки для отлова столкновений в тех случаях, когда объекты могли бы пройти сквозь друг друга, но она не предоставляет физически аккуратных результатов столкновений, поэтому вы можете всё ещё счесть нужным уменьшить значение фиксированного временного шага (fixed Time step) в инспекторе менеджера времени (TimeManager), чтобы симуляция прошла более точно если вы испытывали бы проблемы с быстро движущимися объектами.

Используйте правильный размер

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.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *