Я использую MVC в своем проекте Unity 3D. У меня есть CollisionPoller для определения контактов и движения. Если я использую MoveController и CollisionPoller, мой персонаж трясет ось Y каждый кадр на +/- 0,01.
Если я использую «Кинематический», это работает, но мой персонаж проходит через склоны. Я могу уменьшить высоту капсульного коллайдера, но на склонах это не работает (моего персонажа снова трясет).
public class CollisionPoller
{
private readonly PlayerView _playerView;
private const int MaxBounces = 5;
private const float Threshold = 0.015f;
private const float MaxSlopeAngle = 45f;
private Bounds _bounds;
public CollisionPoller(PlayerView playerView)
{
_playerView = playerView;
_bounds = _playerView.Collider.bounds;
_bounds.Expand(-2 * Threshold);
}
public Vector3 CollideAndSlide(Vector3 velocity, Vector3 position, int depth, bool gravityPass, Vector3 velocityInit)
{
if(depth >= MaxBounces)
return Vector3.zero;
var distance = velocity.magnitude + Threshold;
if (!Physics.SphereCast(position, _bounds.extents.x, velocity.normalized, out var hit, distance))
return velocity;
var snapToSurface = velocity.normalized * (hit.distance - Threshold);
var leftOver = velocity - snapToSurface;
var angle = Vector3.Angle(Vector3.up, hit.normal);
if(snapToSurface.magnitude
Подробнее здесь: https://stackoverflow.com/questions/791 ... he-surface
Юнити 3Д. Мой персонаж дрожит на поверхности ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Данные X,Y,Z. Создание графика поверхности и интерполяция из графика поверхности
Anonymous » » в форуме Python - 0 Ответы
- 33 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Данные X,Y,Z. Создание графика поверхности и интерполяция с графика поверхности [закрыто]
Anonymous » » в форуме Python - 0 Ответы
- 28 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Данные X,Y,Z. Создание графика поверхности и интерполяция из графика поверхности
Anonymous » » в форуме Python - 0 Ответы
- 31 Просмотры
-
Последнее сообщение Anonymous
-