Сделать RigidBody и CharachterJoint неактивными - Форум Игроделов
Пн, 20 Май 2024, 06:15 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » ОБЩИЕ ВОПРОСЫ » Сделать RigidBody и CharachterJoint неактивными (Enable отсутствует, вопрос - реально ли?)
Сделать RigidBody и CharachterJoint неактивными
NapalmRainДата: Чт, 20 Ноя 2014, 22:27 | Сообщение # 1
 
Сообщений: 473
Награды: 0
Репутация: 31
Статус: Offline
Доброго всем времени суток!
Есть моделька со скелетом. В ней есть анимация и всё хорошо. При смерти решил использовать RagDoll. Так как стандартные средства юнити сразу создают все необходимые компоненты (Коллайдеры, RigidBody и CharachterJoint), пришёл к выводу, что проще будет в нужный момент создавать такой же набор динамически. Попытки оказались провальными.
Встал вопрос, может возможно как-то уже созданные физические объекты сделать неактивными? Enabled у них в свойствах нет... отсюда вопрос, как сделать так, чтоб Движок на них не реагировал?
 
СообщениеДоброго всем времени суток!
Есть моделька со скелетом. В ней есть анимация и всё хорошо. При смерти решил использовать RagDoll. Так как стандартные средства юнити сразу создают все необходимые компоненты (Коллайдеры, RigidBody и CharachterJoint), пришёл к выводу, что проще будет в нужный момент создавать такой же набор динамически. Попытки оказались провальными.
Встал вопрос, может возможно как-то уже созданные физические объекты сделать неактивными? Enabled у них в свойствах нет... отсюда вопрос, как сделать так, чтоб Движок на них не реагировал?

Автор - NapalmRain
Дата добавления - 20 Ноя 2014 в 22:27
seamanДата: Пт, 21 Ноя 2014, 14:30 | Сообщение # 2
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Обычно просто в нужный момент подменяют модель.
Можешь еще посмотреть тут:
https://www.assetstore.unity3d.com/en/#!/content/661
Ссылка на яндекс - в личке
 
СообщениеОбычно просто в нужный момент подменяют модель.
Можешь еще посмотреть тут:
https://www.assetstore.unity3d.com/en/#!/content/661
Ссылка на яндекс - в личке

Автор - seaman
Дата добавления - 21 Ноя 2014 в 14:30
NapalmRainДата: Пт, 21 Ноя 2014, 14:39 | Сообщение # 3
 
Сообщений: 473
Награды: 0
Репутация: 31
Статус: Offline
seaman, да, раньше у меня и было сделано простой подменой модели, так как не подразумевалась кастомизация персонажей. Сейчас было большое обновление в этом направлении и теперь система принципиально отличается: у меня есть анимированный скелет без меша вообще и множество различных заскинненых мешей, который удочеряются к базоваму скелету и соответственно перенимают его анимацию. Поэтому хотелось бы в нужный момент просто включать "куклу" на базовом скелете.
За ссылку благодарю, попробую этот вариант!
 
Сообщениеseaman, да, раньше у меня и было сделано простой подменой модели, так как не подразумевалась кастомизация персонажей. Сейчас было большое обновление в этом направлении и теперь система принципиально отличается: у меня есть анимированный скелет без меша вообще и множество различных заскинненых мешей, который удочеряются к базоваму скелету и соответственно перенимают его анимацию. Поэтому хотелось бы в нужный момент просто включать "куклу" на базовом скелете.
За ссылку благодарю, попробую этот вариант!

Автор - NapalmRain
Дата добавления - 21 Ноя 2014 в 14:39
ilyakosДата: Пн, 24 Ноя 2014, 00:39 | Сообщение # 4
 
Сообщений: 171
Награды: 0
Репутация: 8
Статус: Offline
"да, раньше у меня и было сделано простой подменой модели, так как не подразумевалась кастомизация персонажей. Сейчас было большое обновление в этом направлении и теперь система принципиально отличается: у меня есть анимированный скелет без меша вообще и множество различных заскинненых мешей, который удочеряются к базоваму скелету и соответственно перенимают его анимацию. Поэтому хотелось бы в нужный момент просто включать "куклу" на базовом скелете.
За ссылку благодарю, попробую этот вариант!"

А разве нельзя заранее на этом скелете создать рэгдолл, поставить isTrigger костям и isKinematic, потом

У меня всё получилось вот так:

public Transform[] bones = new Transform[11]

void Start(){
foreach(var b in bones){
b.rigidbody.isKinematic = true;
b.collider.isTrigger = true;
}
}
void Update(){
if(Input.GetKeyDown(KeyCode.V)){
foreach(var b in bones){
b.collider.isTrigger = false;
b.rigidbody.isKinematic = false;
animation.enabled = false; // Отключаем компонент animation на персонаже

}
}


Сообщение отредактировал ilyakos - Пн, 24 Ноя 2014, 00:41
 
Сообщение"да, раньше у меня и было сделано простой подменой модели, так как не подразумевалась кастомизация персонажей. Сейчас было большое обновление в этом направлении и теперь система принципиально отличается: у меня есть анимированный скелет без меша вообще и множество различных заскинненых мешей, который удочеряются к базоваму скелету и соответственно перенимают его анимацию. Поэтому хотелось бы в нужный момент просто включать "куклу" на базовом скелете.
За ссылку благодарю, попробую этот вариант!"

А разве нельзя заранее на этом скелете создать рэгдолл, поставить isTrigger костям и isKinematic, потом

У меня всё получилось вот так:

public Transform[] bones = new Transform[11]

void Start(){
foreach(var b in bones){
b.rigidbody.isKinematic = true;
b.collider.isTrigger = true;
}
}
void Update(){
if(Input.GetKeyDown(KeyCode.V)){
foreach(var b in bones){
b.collider.isTrigger = false;
b.rigidbody.isKinematic = false;
animation.enabled = false; // Отключаем компонент animation на персонаже

}
}

Автор - ilyakos
Дата добавления - 24 Ноя 2014 в 00:39
NapalmRainДата: Пн, 24 Ноя 2014, 09:43 | Сообщение # 5
 
Сообщений: 473
Награды: 0
Репутация: 31
Статус: Offline
ilyakos, сейчас нет возможности проверить, но мне прям вот даже интересно, а вы сами пробовали свой скрипт? Я ничего не хочу сказать, может я не прав? но на сколько мне известно кинематическая риджидбоди кушает ресурсы на просчёт симуляции физики не многим меньше не кинематической. Поэтому с точки зрения оптимизации вариант не самый лучший ИМХО. Но если я не ошибаюсь, поправьте меня. Потому как я уже разработал процентов на 80 систему динамического создания и уничтожение куклы на действующей модели. И если вариант с присвоением isKinematic true не сильно повлияет на производительность (я помешан на оптимизации), то, конечно, он был бы проще.
Для справки: данную систему собираюсь использовать на всех моделях в игре (не только главного персонажа, но и всех НПС и монстрах), отсюда и вопрос производительности.
 
Сообщениеilyakos, сейчас нет возможности проверить, но мне прям вот даже интересно, а вы сами пробовали свой скрипт? Я ничего не хочу сказать, может я не прав? но на сколько мне известно кинематическая риджидбоди кушает ресурсы на просчёт симуляции физики не многим меньше не кинематической. Поэтому с точки зрения оптимизации вариант не самый лучший ИМХО. Но если я не ошибаюсь, поправьте меня. Потому как я уже разработал процентов на 80 систему динамического создания и уничтожение куклы на действующей модели. И если вариант с присвоением isKinematic true не сильно повлияет на производительность (я помешан на оптимизации), то, конечно, он был бы проще.
Для справки: данную систему собираюсь использовать на всех моделях в игре (не только главного персонажа, но и всех НПС и монстрах), отсюда и вопрос производительности.

Автор - NapalmRain
Дата добавления - 24 Ноя 2014 в 09:43
ilyakosДата: Пн, 24 Ноя 2014, 10:20 | Сообщение # 6
 
Сообщений: 171
Награды: 0
Репутация: 8
Статус: Offline
Да, пробовал, всё нормально вроде... Не знаю, чем это может больше грузить систему, чем замена модели рэгдоловой..

Добавлено (24 Ноя 2014, 10:20)
---------------------------------------------
http://rghost.ru/59233664

 
СообщениеДа, пробовал, всё нормально вроде... Не знаю, чем это может больше грузить систему, чем замена модели рэгдоловой..

Добавлено (24 Ноя 2014, 10:20)
---------------------------------------------
http://rghost.ru/59233664


Автор - ilyakos
Дата добавления - 24 Ноя 2014 в 10:20
NapalmRainДата: Пн, 24 Ноя 2014, 11:19 | Сообщение # 7
 
Сообщений: 473
Награды: 0
Репутация: 31
Статус: Offline
Цитата ilyakos ()
Не знаю, чем это может больше грузить систему, чем замена модели рэгдоловой..

Фактом одновременного существования большого количества rigidbody на сцене. Я почему и сказал, что могу ошибаться и чтоб меня поправили если это так.
Но на сколько я помню, даже кинематическая rigidbody участвует в процессе просчёта физики - а это уже проблема.

Но за подсказку всё равно спасибо!

Добавлено (24 Ноя 2014, 11:19)
---------------------------------------------
seaman, посмотрел, кстати, компонент, но он, по совести, делает тоже самое: просто подменяет модель.

Сообщение отредактировал NapalmRain - Пн, 24 Ноя 2014, 11:19
 
Сообщение
Цитата ilyakos ()
Не знаю, чем это может больше грузить систему, чем замена модели рэгдоловой..

Фактом одновременного существования большого количества rigidbody на сцене. Я почему и сказал, что могу ошибаться и чтоб меня поправили если это так.
Но на сколько я помню, даже кинематическая rigidbody участвует в процессе просчёта физики - а это уже проблема.

Но за подсказку всё равно спасибо!

Добавлено (24 Ноя 2014, 11:19)
---------------------------------------------
seaman, посмотрел, кстати, компонент, но он, по совести, делает тоже самое: просто подменяет модель.


Автор - NapalmRain
Дата добавления - 24 Ноя 2014 в 11:19
seamanДата: Пн, 24 Ноя 2014, 18:41 | Сообщение # 8
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Цитата
делает тоже самое

Ну, я не смотрел, так что - увы...
 
Сообщение
Цитата
делает тоже самое

Ну, я не смотрел, так что - увы...

Автор - seaman
Дата добавления - 24 Ноя 2014 в 18:41
NapalmRainДата: Пн, 24 Ноя 2014, 20:02 | Сообщение # 9
 
Сообщений: 473
Награды: 0
Репутация: 31
Статус: Offline
seaman, Подскажи пожалуйста по вопросу выше, может ты в курсе: грузит ли систему большое количество кинематических риджидбоди?
 
Сообщениеseaman, Подскажи пожалуйста по вопросу выше, может ты в курсе: грузит ли систему большое количество кинематических риджидбоди?

Автор - NapalmRain
Дата добавления - 24 Ноя 2014 в 20:02
seamanДата: Вт, 25 Ноя 2014, 22:00 | Сообщение # 10
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Ну, говорят, что любые ригидбоди тормозят. Для кинематик советуют двигать не трансформом, а самим ригидбоди (Rigidbody.position, Rigidbody.rotation). Причем ссылку на ригидбоди - кешировать. Говорят так значительно быстрее.
Я не проверял.
 
СообщениеНу, говорят, что любые ригидбоди тормозят. Для кинематик советуют двигать не трансформом, а самим ригидбоди (Rigidbody.position, Rigidbody.rotation). Причем ссылку на ригидбоди - кешировать. Говорят так значительно быстрее.
Я не проверял.

Автор - seaman
Дата добавления - 25 Ноя 2014 в 22:00
NapalmRainДата: Ср, 26 Ноя 2014, 10:28 | Сообщение # 11
 
Сообщений: 473
Награды: 0
Репутация: 31
Статус: Offline
seaman, понял. В любом случае спасибо! Вопрос на данный момент решил.
 
Сообщениеseaman, понял. В любом случае спасибо! Вопрос на данный момент решил.

Автор - NapalmRain
Дата добавления - 26 Ноя 2014 в 10:28
Форум Игроделов » UNITY3D » ОБЩИЕ ВОПРОСЫ » Сделать RigidBody и CharachterJoint неактивными (Enable отсутствует, вопрос - реально ли?)
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024