Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void Update()
- {
- //Проверка исходных условий
- bool isForwardPressed = Input.GetAxis("Vertical") > 0f;
- bool isJumpPressed = Input.GetAxis("Jump") > 0f;
- if (!_playerController.IsGrounded && isForwardPressed && !_isClimbing && _parkourObstacles.Count > 0 && isJumpPressed)
- {
- //Находим коллайдер для попытки паркура
- RaycastHit hit;
- if (Physics.Raycast(transform.position, transform.forward, out hit, _parkourCollider.radius, _obstacleMask))
- {
- //Препятствие в коллекции
- var parkourObstacle = _parkourObstacles.Find(obstacle => obstacle.Collider == hit.collider);
- ParkourObstacle.Wall wall = default(ParkourObstacle.Wall);
- //Если нашли препятствие и успешно получили стену из него
- if (parkourObstacle != null && parkourObstacle.TryGetWall(hit.point, ref wall))
- {
- //Проверяем получаем высшую точку препятствия
- //Проверяем что разница высот между точкой начала залезания и высшей точкой препятствия допустимая
- Vector3 highestPoint = wall.GetHighestPoint();
- if (highestPoint.y > transform.position.y && highestPoint.y - transform.position.y <= _parkourHeight)
- {
- //Запускаем паркур
- StartClimbing(parkourObstacle, wall, hit.point);
- }
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment