Войти
ПрограммированиеФорумФизика

Unity Character Motor (комментарии) (4 стр)

Страницы: 1 2 3 4 5 Следующая »
#45
14:00, 30 июня 2016

ant0n
ну ок, я потестю на досуге. У меня есть годот, мне не сложно :)

#46
14:04, 30 июня 2016

Madware
> ну ок, я потестю на досуге. У меня есть годот, мне не сложно :)
давай, только отпишись обязательно ;)

#47
15:04, 30 июня 2016

ant0n
Все то у тебя парой строчек кода делается) И что за ненависть к ассетам?) То что ты на видио показал, не более чем просто одно действие))) import package -> fps controller))) вот и бомбит, да?)

#48
16:51, 30 июня 2016

ant0n
Я так понял, ты используешь rigid body, который реализует гравитацию, трение, скольжение, наверно даже сопротивление воздуха.
В CharacterController этого нет, ибо это просто коллайдер со специфической обработкой коллизии. В PhysX, кстати, можно сделать, чтобы персонаж скользил с крутой поверхности, но в Unity это не доступно.
Вообще я не уверен хорошо ли для этой цели подходит Rigidbody, ибо одно дело физика какой-то коробки, а другое дело - физика персонажа.

#49
19:50, 30 июня 2016

ant0n
Я вообще мимо проходил, просто увидел очередной велосипедист хвалит свой байк).

#50
21:45, 1 июля 2016

Смотрю OnControllerColliderHit из оригинального CharacterMotor. И видимо я не правильно понял как он работает.

function OnControllerColliderHit (hit : ControllerColliderHit) {
  if (hit.normal.y > 0 && hit.normal.y > groundNormal.y && hit.moveDirection.y < 0) {
    if ((hit.point - movement.lastHitPoint).sqrMagnitude > 0.001 || lastGroundNormal == Vector3.zero)
      groundNormal = hit.normal;
    else
      groundNormal = lastGroundNormal;
    
    movingPlatform.hitPlatform = hit.collider.transform;
    movement.hitPoint = hit.point;
    movement.frameVelocity = Vector3.zero;
  }
}

Во первых, зачем lastGroundNormal не ясно. Но я это убрал и вроде все нормально.

Во вторых, я думал, что условие hit.moveDirection.y < 0 проверяет в состоянии прыжка персонаж или нет. Но сейчас заметил, что hit.moveDirection это абсолютно не вектор скорости.
При обычной ходьбе, hit.moveDirection == (0, -1, 0). При коллизии со стеной, получаем несколько hit'ов, первый вектор  == (0, -1, 0), второй вектор == (x, 0, x), т.е. вектор горизонтальный. И только при коллизии с потолком, вектор == (0, 1, 0). 
Видимо проверка защищает от потолка. Но т.к. у потолка не может быть hit.normal.y > 0, то проверки этой нормали достаточно.

В Unity документации https://docs.unity3d.com/ScriptReference/ControllerColliderHit-mo… irection.html написано:
CharacterController использует последовательность движений, чтобы выполнить движение в соответствие  move direction и step Offset. moveDirection  будет направлением движения, во время которого произошло движение.

В PhysX документации http://docs.nvidia.com/gameworks/content/gameworkslibrary/physx/a… ollerHit.html вообще два слова: Motion direction.

Хз что там за последовательность движений, но такое чувство, что горизонтальное и вертикальное движение происходит раздельно.

#51
17:51, 2 июля 2016

WISHMASTER35
> Вообще я не уверен хорошо ли для этой цели подходит Rigidbody, ибо одно дело
> физика какой-то коробки, а другое дело - физика персонажа.
Тут http://docs.nvidia.com/gameworks/content/gameworkslibrary/physx/g… er-controller описаны проблемы, связанные с использованием rigidbody.

The main advantage of kinematic controllers is that they do not suffer from the following issues, which are typical for dynamic controllers:
...

Из-за Auto-stepping персонаж очень сильно подпрыгивает, когда заходит на бордюры и тп. Кто-нибудь знает как лучше это исправить?

+ Показать

#52
7:04, 24 июля 2016

ant0n
>вот например, запилил на одном маленьком, но очень гордом движке
>умеет вроде все
Убогие прыжки в стиле супермена, на первую лестницу не зашел с первой попытки, со второй начинал катиться вниз как только персонаж останавливался...
Хотя отдам должное godot, при таком говнокоде юнити тоже примерно так же вела бы себя.

#53
21:04, 24 июля 2016

Dewa1s
> Убогие прыжки в стиле супермена
чем тебе прышки не угодили? или просто подгорает, но не к чему придраться? Хотя возможно ты просто не знаешь, что сила прыжка регулируется как угодно.

Dewa1s
> на первую лестницу не зашел
так и было задумано, не возможно зайти на слишком крутые подъемы. Со второй попытки я запрыгнул, если не дошло.

Dewa1s
> со второй начинал катиться вниз как только персонаж останавливался
тему не читай, сразу отвечай. Уже отвечал на этот вопрос.

Dewa1s
> при таком говнокоде юнити тоже примерно так же вела бы себя.
во-первых, где говнокод?
во-вторых, покажи как юнити при таком коде будет работать.
если не ответишь, то ты обычный подгоревший балабол. Я привел и пример и видео, как только меня попросили и получил взрывы пуканов, хотя чего еще можно было ожидать от юнитифилов?

#54
15:12, 26 июля 2016
Dewa1s
я так понимаю слилась школота
#55
16:32, 26 июля 2016

6-й пункт

"...Скорость может быть в от 0 до 1..."
Возможно стоит написать: "...Скорость может быть в промежутке от 0 до 1..."?

#56
23:10, 26 июля 2016

sawich
> в промежутке
в диапазоне, я бы сказал :)

#57
23:30, 26 июля 2016

sawich
поправил.

#58
7:35, 27 июля 2016

WISHMASTER35
> Из-за Auto-stepping персонаж очень сильно подпрыгивает, когда заходит на
> бордюры и тп. Кто-нибудь знает как лучше это исправить?

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

#59
9:06, 27 июля 2016

Madware
> Для лестниц и прочего ступенчатого хорошо подходит конвексный меш коллайдер
Достаточно просто бокса. На видео, кажется, было это видно. И вот на этом боксе лестницы персонаж очень подпрыгивает.

Страницы: 1 2 3 4 5 Следующая »
ПрограммированиеФорумФизика

Тема в архиве.