Пятница, 29 Марта 2024, 05:22

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Вопрос по физике в 2д платформере
Вопрос по физике в 2д платформере
iPandaДата: Среда, 23 Декабря 2015, 16:39 | Сообщение # 1
был не раз
Сейчас нет на сайте
Привет, подскажите пожалуйста как делают "правильно" физику столкновений в этом движке. Столкнулся с несколькими проблемами:

Вот есть у меня герой с двумя коллайдерами. один (круглый) с трением 1 для ног, второй (прямоугольный) с трением 0 чтоб не лип к стенам, когда прыгаешь в их сторону.



Так вот из-за того что у прямоугольного коллайдера стоит трение 0, то когда герой вбегает по наклонной поверхности (у поверхности трение 1, использовал материал как у ног героя) к стене, то он взлетает вверх и выглядит это ужасно :(



Была идея, что проблема с моим movementController'ом, потому что он позволяет двигаться в прыжке и из-за того герой липнет к стенам если трение 1 у прямоугольного коллайдера, но ведь почти во всех аналогичных играх можно двигаться в прыжке.

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



MovementController.cs




Сообщение отредактировал iPanda - Среда, 23 Декабря 2015, 16:43
VerdCSДата: Среда, 23 Декабря 2015, 18:09 | Сообщение # 2
частый гость
Сейчас нет на сайте
По поводу съезжания когда стоишь на наклонной поверхности: попробуй отключать массу у Rigidbody2D компонента, если герой стоит на земле.
По поводу взлетания когда вбегает по наклонной: попробуй значительно увеличивать массу когда герой в воздухе.

А вообще я советую отказаться от наклонных поверхностей вообще (ну или хотя бы крутых склонов). Такой тип контроллера с ними не ладит.
iPandaДата: Среда, 23 Декабря 2015, 18:27 | Сообщение # 3
был не раз
Сейчас нет на сайте
Цитата VerdCS ()
По поводу съезжания когда стоишь на наклонной поверхности: попробуй отключать массу у Rigidbody2D компонента, если герой стоит на земле.
По поводу взлетания когда вбегает по наклонной: попробуй значительно увеличивать массу когда герой в воздухе.

А вообще я советую отказаться от наклонных поверхностей вообще (ну или хотя бы крутых склонов). Такой тип контроллера с ними не ладит.


Спасибо, с этим все красиво получается

С этим вообще все красиво и аккуратно получается.

дописал в скрипт Update
if (!grounded)
{
rb2d.mass = 100;
}
else
{
rb2d.mass = 0;
}
и выставил значения параметров по другому
MoveForce = 0,01f;
JumpForce = 0,03f;

====
На другом форуме предложили вариант - сделать для стен трение 0, а для земли 1 и оставить один коллайдер, но не до конца мне нравилась такая физика, хоть и была близка к ожидаемому результату)


VerdCSДата: Среда, 23 Декабря 2015, 18:32 | Сообщение # 4
частый гость
Сейчас нет на сайте
Да не за что. Здорово что помогло smile
iPandaДата: Среда, 23 Декабря 2015, 23:39 | Сообщение # 5
был не раз
Сейчас нет на сайте
На самом деле, я поковырял оба решения, и пришел к выводу, что ваше решение слабовато потому что может произойти столкновение героя в воздухе (с массой 100) и на земле (с массой 0) с другим объектом и будет разное поведение (в одном случае останется на месте, в другом улетит непонятно куда). в итоге поэксперементировал с трением разных поверхностей (стен 0, наклонных поверхностей 2, а для земли 1) и вроде удавлетворительно все выглядит)



Сообщение отредактировал iPanda - Среда, 23 Декабря 2015, 23:39
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Вопрос по физике в 2д платформере
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг