Столкновение и наклоны контроллера персонажей в Unity 3D - PullRequest
0 голосов
/ 07 ноября 2019

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

RaycastHit hit;
Physics.Raycast(transform.position, Vector3.down, out hit);
if (isGrounded)
{
    if (Vector3.Angle(transform.up, hit.normal) > CC.slopeLimit)
    {
        gravVector.x += (1f - hit.normal.y) * hit.normal.x * slideFriction * Time.deltaTime;
        gravVector.z += (1f - hit.normal.y) * hit.normal.z * slideFriction * Time.deltaTime;
        if (gravVector.y > -maxGravity * Vector3.Angle(transform.up, hit.normal) / 90)
        {
            gravVector.y -= Vector3.Angle(transform.up, hit.normal) / 90 * accGravity * Time.deltaTime;
        }
        return gravVector;
    }
    //else gravity is straight down n stuff
}

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

Visual representation of the issue

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

1 Ответ

1 голос
/ 07 ноября 2019

Вы можете рассмотреть возможность использования Physics.SphereCast для наведения на большую площадь, скажем, размера капсульного коллайдера вашего контроллера. Это не «какая-то безумная сферическая система радиопередачи» - это достаточно эффективная встроенная система Unity, предназначенная для подобных ситуаций.

...