(unity)Мужики, нужна помощь, не могу догнать как сделать проверку на то, персонаж находиться на поверхности или нет (нужно для того чтобы персонаж не мог дабл джампить)
Вешаешь риджибади туди - создаешь коллайдер снизу ног - коллайдер на объекте котором ступать, далее делаешь маски коллайдеров условно ноги и земля - далее делаешь пересечение коллайдеров
На чем контроллер написан? Хотя в любом случае универсально будет разместить пивот (пустышку) в ногах человека и кидать Linecast или Raycast (мало ли нужно определить тип материала земли) в FixedUpdate using UnityEngine; public class GroundCheck : MonoBehaviour { [Header("Ground Check")] [SerializeField] private float _groundDistance = 0.2f; [SerializeField] private LayerMask _groundLayer; [SerializeField] private Transform _legsPivot; public bool IsGrounded { get; private set; } private void Awake() { if (_legsPivot != null) return; Debug.LogError("GroundCheck script requires a legPivotTransform to be set."); enabled = false; } private void FixedUpdate() { PerformGroundCheck(); } private void PerformGroundCheck() { if (_legsPivot == null) return; Vector3 lineStart = _legsPivot.position; Vector3 lineEnd = lineStart + Vector3.down * _groundDistance; IsGrounded = Physics.Linecast(lineStart, lineEnd, _groundLayer); } } CSHARP using UnityEngine; public class GroundCheck : MonoBehaviour { [Header("Ground Check")] [SerializeField] private float _groundDistance = 0.2f; [SerializeField] private LayerMask _groundLayer; [SerializeField] private Transform _legsPivot; public bool IsGrounded { get; private set; } private void Awake() { if (_legsPivot != null) return; Debug.LogError("GroundCheck script requires a legPivotTransform to be set."); enabled = false; } private void FixedUpdate() { PerformGroundCheck(); } private void PerformGroundCheck() { if (_legsPivot == null) return; Vector3 lineStart = _legsPivot.position; Vector3 lineEnd = lineStart + Vector3.down * _groundDistance; IsGrounded = Physics.Linecast(lineStart, lineEnd, _groundLayer); } }
пустышку на объект вешаешь и вниз смещаешь. В скрипте без фикседов просто райкаст вниз пускаешь, если тру - граунд нет так нет. В решении CC от юнки уже встроена проверка граунда одним методом controller.isGround и не надо никакой физики.
блядь, та вариантов миллиард, чек может быть через что угодно в принципе, рейкаст, оверлап сфера, триггер, трай гет компонент, леер и любимый всем тэг
попробуй, создать невидимый объект, и натяни колайдер на него и на персонажа, и в коде, прыжок помещаешь в условие, что если колайдер персонажа и объекта соприкосаеться то только тогда можно пригать