Свой Character controller. Оно надо?

Программирование на Юнити.

Re: Свой Character controller. Оно надо?

Сообщение BlackMamba 17 июл 2011, 19:42

дык капсула в character controller-е + коллайдеры, должно работать, во всяком случае по платформе бегает нормуль :)
mail: _gdeMoiGusi@gmail.com
skype: Ellseworth
Аватара пользователя
BlackMamba
UNITрон
 
Сообщения: 305
Зарегистрирован: 06 янв 2011, 16:16
Откуда: Москва

Re: Свой Character controller. Оно надо?

Сообщение lazykiller 20 июл 2011, 12:24

думаю на локомошене либо переделать контролер под каждую пятку (это вообще было бы супер) либо план действий такой уменьшить капсулу контролера в 0.01 радиус тоже 0.01 отодвинуть в самый низ, короче должна остаться горошина под ногами, там же выставить ширину скина персонажа, навесить на перса стандартный рыгдол и удалить с него все риджидбадис (или деактивировать тогда в момент смерти можно активировать и вуаля, повалился как бревно) будет толкать получше чем просто капсула хотя и далеко от идеала и кроме того будет цепляться корявками друг за друга (можно сделать игнорколижн частей модели друг на друга и всё в ажуре)
Аватара пользователя
lazykiller
UNец
 
Сообщения: 17
Зарегистрирован: 18 июл 2011, 17:44

Re: Свой Character controller. Оно надо?

Сообщение lol 23 июл 2011, 13:27

Мне вот одно не понятно по теме коллизий. Ведь коллайдер с ригидбоди точно знает, лежит оно на чем-то или нет - потому что это знает физический движок, который не дает провалиться вниз, но почему нет готово метода получения этих данных?
Насколько я понимаю, вот у меня есть объект ящик с коллайдером и ригидбоди, чтобы узнать находится ли ящик на земле, мне надо трейсить самому лучом вниз, хотя логично, что движок этой информацией(и при том более точной!) уже обладает.
lol
Старожил
 
Сообщения: 508
Зарегистрирован: 15 ноя 2009, 10:48
Откуда: Москва

Re: Свой Character controller. Оно надо?

Сообщение Zaicheg 23 июл 2011, 14:14

MonoBehaviour.OnCollisionStay(collisionInfo : Collision)
OnCollisionStay is called once per frame for every collider/rigidbody that is touching rigidbody/collider.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Свой Character controller. Оно надо?

Сообщение lol 23 июл 2011, 16:54

Zaicheg писал(а):MonoBehaviour.OnCollisionStay(collisionInfo : Collision)
OnCollisionStay is called once per frame for every collider/rigidbody that is touching rigidbody/collider.


Этот вариант да, понятен, но он не освобождает от того, что надо, например, высчитывать, где коллизия произошла сверху или снизу..
lol
Старожил
 
Сообщения: 508
Зарегистрирован: 15 ноя 2009, 10:48
Откуда: Москва

Re: Свой Character controller. Оно надо?

Сообщение Zaicheg 23 июл 2011, 20:22

Это что, какие-то дикие и очень нужные рассчёты, чтобы юнитехам их выносить в отдельный метод или свойство?
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Свой Character controller. Оно надо?

Сообщение DDDENISSS 14 окт 2011, 17:46

Начал изучать Unity, но ужасно не нравится, что стандартный character controller не может толкать предметы, а вот его могут толкать и даже крутить. А мне бы хотелось бы открывать\закрывать двери и делать другие взаимодействия. Никто так и не написал свой контроллер?
Хочу свой написать, но даже не знаю как правильно это делается. То капсула скользила с горок, увеличил трение - теперь не залазит на горки. Движение у меня через addForce с разгонами и торможениями выглядит как у машины) Если для ног луч сделать, то будут проблемы с движущимися платформами(
Аватара пользователя
DDDENISSS
UNIверсал
 
Сообщения: 439
Зарегистрирован: 11 сен 2011, 20:33

Re: Свой Character controller. Оно надо?

Сообщение gnoblin 14 окт 2011, 18:12

Свой контроллер писать в большинстве случаев плохая идея.
Для толкания предметов есть скрипт Push (или нечто с похожим названием, есть в одном из стандартных примеров - по-моему в буткемпе).
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Свой Character controller. Оно надо?

Сообщение Shi 14 окт 2011, 18:49

Написал зачатки своего чар контроллера полностью на физике (1 ригидбоди и капсуль коллайдер+SphereCast). При более 50 управляемых персонажах наслаждаюсь логом профайлера "Physics.Simulate - 75%" и соответственно ФПС в 100 раз ниже стандартного (Две nVidia Geforce 9800 в SLI, одна под PhysX). :-s
Буду думать.
Аватара пользователя
Shi
UNITрон
 
Сообщения: 211
Зарегистрирован: 30 ноя 2010, 14:58
Откуда: Санкт-Петербург

Re: Свой Character controller. Оно надо?

Сообщение gnoblin 14 окт 2011, 18:55

юнити не поддерживает аппаратное ускорение физики, если чо
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Свой Character controller. Оно надо?

Сообщение DDDENISSS 14 окт 2011, 20:39

Shi, а SphereCast как используется?
Вот если двигать с помощью addForce, то получается медленное ускорение и замедление, а должно быть почти мгновенное. и на горку будет медленно заходить, хотя, если не очень медленно, то норм.
Эти проблемы можно решить, если действовать напрямую на трансформацию, но это уже не физика.
Хочу попробовать два варианта. 1) перед AddForce обнулить скорость, что бы не было изменений скорости. 2) Может можно действовать напрямую на трансформацию, а чтобы работало столкновение вычислять скорость для объекта, но не применять ее? Или для столкновений не скорость нужна?
Аватара пользователя
DDDENISSS
UNIверсал
 
Сообщения: 439
Зарегистрирован: 11 сен 2011, 20:33

Re: Свой Character controller. Оно надо?

Сообщение burlak 14 окт 2011, 21:23

DDDENISSS писал(а):Shi, а SphereCast как используется?
Вот если двигать с помощью addForce, то получается медленное ускорение и замедление, а должно быть почти мгновенное. и на горку будет медленно заходить, хотя, если не очень медленно, то норм.
Эти проблемы можно решить, если действовать напрямую на трансформацию, но это уже не физика.
Хочу попробовать два варианта. 1) перед AddForce обнулить скорость, что бы не было изменений скорости. 2) Может можно действовать напрямую на трансформацию, а чтобы работало столкновение вычислять скорость для объекта, но не применять ее? Или для столкновений не скорость нужна?


Ну нет. Так нельзя. Не дай бог на коллизию нарваться - разлетится все с огромной силой.

Проще всего приложить к телу намного большую силу. И тут же силу противодействия, которая зависит от скорости - или просто drag увеличить.
С уважением, Дмитрий Бурлаков.
skype: dmitry.burlakov
email: _dmitry.burlakov@gmail.com
Аватара пользователя
burlak
UNITрон
 
Сообщения: 326
Зарегистрирован: 28 янв 2010, 10:21
Откуда: Санкт-Петербург

Re: Свой Character controller. Оно надо?

Сообщение Shi 14 окт 2011, 22:07

DDDENISSS писал(а):Shi, а SphereCast как используется?
Вот если двигать с помощью addForce, то получается медленное ускорение и замедление, а должно быть почти мгновенное. и на горку будет медленно заходить, хотя, если не очень медленно, то норм.

http://unity3d.com/support/documentatio ... eCast.html Использую именно его, т.к. обычный raycast проверяет расстояние только в одном месте. Бывали случаи, что Capsule краем застревал где либо на "обрыве" и не мог двигаться, т.к. raycast не "видел" земли.
Я делаю проще: обычный rigidbody.AddForce. А на гору, к примеру, человек, и так будет чуть медленней забираться. Почти мгновенное? Дык и прилагайте столько силы, сколько необходимо.
Аватара пользователя
Shi
UNITрон
 
Сообщения: 211
Зарегистрирован: 30 ноя 2010, 14:58
Откуда: Санкт-Петербург

Re: Свой Character controller. Оно надо?

Сообщение DDDENISSS 18 окт 2011, 22:20

Shi, в 100 раз это что-то слишком сильно тормозит. Хотя таким контроллером можно обойтись только для главного персонажа. А одной капсул коллайдером никак не получилось обойтись?

Я вот пытаюсь на одной капсуле сделать.
В начале Update обнуляю скорость
Синтаксис:
Используется csharp
body.angularVelocity = Vector3.zero;
body.velocity = new Vector3(0, body.velocity.y, 0);
 

Выглядит как-то тупо. Может есть более лучше способ это сделать?
А потом если была команда идти, то двигаю с помощью body.AddForce.
Пока заметил один баг: если подниматься по горке и остановиться, то подлетаю по инерции вверх. как от этого можно исправить?
И можно как-то сделать, чтобы при сталкивании с объектом этот объект не сильно отлетал или вообще не двигался как в стандартном примере?
И еще, почему, если не двигаться, то OnCollisionStay не вызывается? Как можно определить стоит ли объект на земле?

п.с. в гта4 похоже даже на каждого человека даже инверсная кинематика есть и работает)
Аватара пользователя
DDDENISSS
UNIверсал
 
Сообщения: 439
Зарегистрирован: 11 сен 2011, 20:33

Re: Свой Character controller. Оно надо?

Сообщение Shi 18 окт 2011, 22:51

DDDENISSS писал(а):Shi, в 100 раз это что-то слишком сильно тормозит. Хотя таким контроллером можно обойтись только для главного персонажа. А одной капсул коллайдером никак не получилось обойтись?

У меня, пока, нет. У вас - почему бы и нет, пробуйте.
DDDENISSS писал(а):И еще, почему, если не двигаться, то OnCollisionStay не вызывается?

У меня вызывается.
Аватара пользователя
Shi
UNITрон
 
Сообщения: 211
Зарегистрирован: 30 ноя 2010, 14:58
Откуда: Санкт-Петербург

Пред.

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8