Физика платформеров - XNA Farseer C # - PullRequest
2 голосов
/ 14 января 2012

Итак, я использовал Farseer для платформера с физикой, и я столкнулся с некоторыми проблемами, как показано ниже:

Fig 1

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

Fig2

То же самое относится, когда я хочу, чтобы мой персонаж двигался. Когда персонаж движется, он должен приложить силу и оттолкнуть предметы под ним (1), не носить объект с собой и, следовательно, двигаться в противоположном направлении (2).

Хотя я буду использовать скелетную анимацию для этой игры, я бы хотел, чтобы она была в форме ограничивающего прямоугольника. Это будет сетевая игра, и физика будет обрабатываться через сервер. Я предпочитаю избегать нагрузки на сервер, поэтому я буду держать персонажей в ограничительной рамке и сохраню все скелетные анимации на стороне клиента.

Итак, вот мои вопросы:

Я вынужден "подделать" эти силы?

Разумно ли дублировать скелетную анимацию на стороне сервера, и просто использовать капсулы для разных костей каждого персонажа? Это будет слишком интенсивно?

Игра должна поддерживать 20-30 человек на комнату в нескольких комнатах. Если дело доходит до этого, я бы хотел избежать очень сильной нагрузки на сервер.

Я пытался опубликовать это в GameDev, но у меня пока нет репутации размещать там изображения, поэтому сначала я попытаюсь найти здесь ответ.

Ответы [ 2 ]

2 голосов
/ 16 января 2012

Вместо применения силы в направлении, в котором вы хотите, чтобы ваш игрок двигался, примените его в противоположном направлении. По сути, это создаст столкновение, и окно подтолкнет вашего персонажа вверх. Если вы поиграете со свойством реституции тела, вы сможете достичь приемлемого «бодрости», которое может работать на вас.

Вам нужно будет проверить, лежит ли ваш игрок сначала на вершине бокса, иначе ваш игрок просто полетит вниз.

1 голос
/ 19 января 2012

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

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

...