Примечание: для надежности удержания большого веса, привязывайте веревку к крюку двойным стопорным узлом.
Как сделать прочный абордажный крюк
Легкий и прочный абордажный крюк можно сделать своими руками.
Уникальная по исполнению «кошка» имеет 15-метрую веревку из паракорда, разбирается, что удобно для компактного хранения. Также в торце крюка установлен магнит, который можно использовать, чтобы магнитить ключи и другие металлические предметы.
Материалы для изготовления:
• Болт и гайка диаметром 1,9 см; • Неодимовый магнит; • Стальной стержень (диаметр – 0,8 см).
Инструкция по изготовлению
Шаг 1: Выточка корпуса якоря
Шаг 2 Необходимо оставить небольшой отрезок резьбового соединения, куда будет прикручиваться гайка, а остальное – проточить. Это будет корпусом будущей «кошки».
Торец болта тоже подвергается обработке на станке.
Шаг 3 Чтобы завершить торец болта, нужно высверлить отверстие в центре головки. Здесь будет установлен магнит.
Шаг 4 В гранях гайки с помощью линейки определятся центр.
В центре гайки на равном расстоянии друг от друга нужно просверлить направляющие отверстия, три штуки. Впоследствии туда будут установлены крюки.
После того, как основание для крюка готово, нужно изготовить карабин, к которому он будет привязана.
Для изготовления карабина потребуется стальная проволока диаметром полсантиметра.
Шаг 5 Проволоку нужно обернуть вокруг стержня вышеуказанного диаметра 0,8 см. Полученная спираль сокращается до одной петли.
Получился карабин, который устанавливается в отверстие, сделанное в основании.
Шаг 6 Чтобы карабин держался прочно, в основании делается отверстие и устанавливается штифт.
Проволока с петлей должна прочно сидеть в основании якоря. Все неровности шлифуются.
Шаг 7
Новый этап самоделки – изготовление когтей якоря. Для этого от стержня отрезаются три прутка одинаковой длины.
Длина когтей должна примерно соответствовать длине основания «кошки».
На конце каждого из прутьев вытачивается конус. Получаются короткие отрезки, напоминающие по форме карандаш.
Шаг 8 Чтобы определить окончательную форму якорных когтей, нужно воспользоваться проволокой.
Прежде чем установить проволоку в гайку, нужно согнуть когти с помощью трубы и тисков. Каждый отрезок устанавливается в тиски и гнется.
Далее – когти устанавливаются и привариваются в предназначенные для них отверстия в гайке.
Сварные швы зачищаются.
Шаг 9 Окончательный этап – покрытие абордажного крюка порошковой краской, которая распыляется на крюк. Эти манипуляции лучше производить на улице.
После того, как объект окрашен, «кошку» нужно прогреть в печи.
Магнит приклеивается к болту с помощью суперклея.
Веревка привязывается к готовой поделке. Абордажный крюк готов к работе!
Понравилась статья? Подпишитесь на канал, чтобы быть в курсе самых интересных материалов
Источник
Добавление верёвки
Наш слизняк не сможет летать по воздуху без верёвки, поэтому самое время дать ему то, что будет визуальным отображением верёвки и имеет способность «оборачиваться» вокруг углов.
Для этого идеально подходит line renderer, потому что он позволяет нам передавать количество точек и их позиции в пространстве мира.
Идея здесь заключается в том, что мы всегда храним первую вершину верёвки (0) в позиции игрока, а все остальные вершины позиционируются динамически, когда верёвка должна обернуться вокруг чего-нибудь, в том числе и текущую позицию шарнира, которая является следующей точкой вдоль верёвки от игрока.
Выберите Player и добавьте к нему компонент LineRenderer. Задайте для Width значение 0.075. Разверните список Materials и в качестве Element 0 выберите материал RopeMaterial, находящийся в папке Materials проекта. Наконец, у Line Renderer для параметра Texture Mode выберите значение Distribute Per Segment.
Перетащите компонент Line Renderer в поле Rope Renderer компонента Rope System.
Нажмите на разворачивающийся список Rope Layer Mask и выберите в качестве слоёв, с которыми может взаимодействовать raycast Default, Rope и Pivot. Благодаря этому при «выстреливании» raycast он будет сталкиваться только с этими слоями, но не с другими объектами, такими как игрок.
Если запустить игру сейчас, то можно заметить странное поведение. Когда мы нацеливаемся в камень над головой слизняка и выстреливаем крюком, то получается небольшой прыжок вверх, после чего наш друг начинает вести себя довольно хаотично. Мы пока не задали расстояние для distance joint, кроме того, не настроены вершины рендера линии. Поэтому мы не видим верёвку, а поскольку distance joint находится прямо над позицией слизняка, текущее значение расстояния distance joint толкает его вниз, на камни под ним.
Но не волнуйтесь, сейчас мы решим эту проблему.
В скрипте RopeSystem.cs добавим в начале класса новый оператор:
using System.Linq; Это позволяет нам использовать запросы LINQ, которые в нашем случае просто позволяют удобно находить первый или последний элемент списка ropePositions.
Примечание: Language-Integrated Query (LINQ) — это название набора технологий, основанных на встраивании возможностей запросов непосредственно в язык C#. Подробнее можно прочитать о нём здесь.
Добавьте новую приватную переменную bool с названием distanceSet под другими переменными: private bool distanceSet; Мы будем использовать эту переменную в качестве флага, чтобы скрипт мог узнавать, что расстояние верёвки (для точки между игроком и текущей опорной точкой, где прикреплён крюк-кошка) задано правильно.
Теперь добавим новый метод, который мы будем использовать для задания позиций вершин верёвки для рендера линии и настройки расстояния distance joint в хранимом списке позиций верёвкой (ropePositions):
private void UpdateRopePositions() { // 1 if (!ropeAttached) { return; } // 2 ropeRenderer.positionCount = ropePositions.Count + 1; // 3 for (var i = ropeRenderer.positionCount — 1; i >= 0; i—) { if (i != ropeRenderer.positionCount — 1) // if not the Last point of line renderer { ropeRenderer.SetPosition(i, ropePositions
); // 4 if (i == ropePositions.Count — 1 || ropePositions.Count == 1) { var ropePosition = ropePositions[ropePositions.Count — 1]; if (ropePositions.Count == 1) { ropeHingeAnchorRb.transform.position = ropePosition; if (!distanceSet) { ropeJoint.distance = Vector2.Distance(transform.position, ropePosition); distanceSet = true; } } else { ropeHingeAnchorRb.transform.position = ropePosition; if (!distanceSet) { ropeJoint.distance = Vector2.Distance(transform.position, ropePosition); distanceSet = true; } } } // 5 else if (i — 1 == ropePositions.IndexOf(ropePositions.Last())) { var ropePosition = ropePositions.Last(); ropeHingeAnchorRb.transform.position = ropePosition; if (!distanceSet) { ropeJoint.distance = Vector2.Distance(transform.position, ropePosition); distanceSet = true; } } } else { // 6 ropeRenderer.SetPosition(i, transform.position); } } } Объясним показанный выше код:
- Выполняем выход из метода, если верёвка не прикреплена.
- Присваиваем величине точек рендера линии верёвки значение количества позиций, хранящихся в ropePositions, плюс ещё 1 (для позиции игрока).
- Обходим в цикле в обратном направлении список ropePositions и для каждой позиции (кроме последней), присваиваем позиции вершины рендера линии значение позиции Vector2, хранящейся по индексу цикла в списке ropePositions.
- Присваиваем опорной точке верёвки вторую с конца позицию верёвки, в которой должен находиться текущий шарнир/опорная точка, или если у нас есть только одна позиция верёвки, то делаем её опорной точкой. Так мы задаём расстояние ropeJoint равным расстоянию между игроком и текущей позицией верёвки, которую мы обходим в цикле.
- Конструкция if обрабатывает случай, когда текущая позиция верёвки в цикле является второй с конца; то есть точкой, в которой верёвка соединяется с объектом, т.е. текущий шарнир/опорная точка.
- Этот блок else обрабатывает присвоение позицию последней вершины верёвки значения текущей позиции игрока.
Не забудьте добавить в конце Update() вызов UpdateRopePositions(): UpdateRopePositions(); Сохраните изменения в скрипте и снова запустите игру. Сделайте «пробелом» небольшой прыжок, нацелившись и выстрелив крюком в камень над персонажем. Теперь вы можете наслаждаться плодами своих трудов — слизняк спокойно качается над камнями.
Теперь можно перейти к окну сцены, выбрать Player, воспользоваться инструментом перемещения (по умолчанию клавиша W), чтобы перемещать его и наблюдать за тем, как две вершины рендера линии верёвки следуют за позицией крюка и позицией игрока для отрисовки верёвки. После того, как мы отпускаем игрока, DistanceJoint2D правильным образом пересчитывает расстояние и слизняк будет продолжать качаться на соединённом шарнире.
Какой бывает лестница для крыши ↑
Основные разновидности классифицируют по их непосредственному назначению:
Пристенные ↑
Они должны удовлетворять определенным условиям.
Примечание: для надежности удержания большого веса, привязывайте веревку к крюку двойным стопорным узлом.
Шаг 1: Что вам потребуется
Шаг 2: Делаем веретено
Отрежьте кусок стального прутка длиной 230 мм.
Загните с одного конца петлю. Длина окружности петли должна быть около 100 мм. Вначале, с помощью тисков, сделайте U-образную закорючку, затем, теми же тисками, сожмите закорючку в петлю (см. рисунки). Отогните петлю на 45 градусов, чтобы она располагалась симметрично относительно основного стержня.
Приварите конец петли к валу.
Шаг 3: Делаем крючки
С помощью заточного станка заточите один конец каждой заготовки, но не слишком остро.
Согните детали под углом 50 градусов, отступив от тупого конца 40 мм.
Шаг 4: Привариваем крючки
Положите на ровную поверхность веретено и два крючка по обе стороны от его нижней части. Приварите крючки к веретену. Затем переверните конструкцию и проварите соединения с другой стороны.
Используя магнит или струбцины, закрепите третий крючок на веретене, перпендикулярно двум ранее приваренным. Приварите его с двух сторон.
Переверните крюк-кошку. С помощью магнита закрепите четвертый крючок, перпендикулярно первым двум. Этот крючок должен лежать в одной плоскости с третьим.
Очистите сварные швы от шлака, а сам металл – от грязи и ржавчины. По желанию, можете покрасить крюк аэрозольной краской.
Обработка точек оборачивания
Игра с качающимся слизняком пока полезна не больше, чем водоотталкивающее полотенце, поэтому нам совершенно определённо нужно её дополнить.
Хорошая новость заключается в том, что только что добавленный метод обработки позиций верёвки можно использовать в будущем. Пока мы используем только две позиции верёвки. Одна соединена с позицией игрока, а вторая — к текущей позиции опорной точки крюка при выстреле им.
Единственная проблема заключается в том, что пока мы не отслеживаем все потенциальные позиции верёвки, и над этим нужно немного поработать.
Для распознавания позиций на камнях, вокруг которых должна оборачиваться верёвка, добавляя новую позицию вершины к рендеру линии, нам необходима система, определяющая, находится ли точка вершины коллайдера между прямой линией между текущей позицией слизняка и текущим шарниром/опорной точкой верёвки.
Похоже, это снова работа для старого доброго raycast!
Для начала нам нужно создать метод, который сможет находить ближайшую точку в коллайдере на основании точки попадания raycast и граней коллайдера.
Добавим новый метод в скрипт RopeSystem.cs:
// 1 private Vector2 GetClosestColliderPointFromRaycastHit(RaycastHit2D hit, PolygonCollider2D polyCollider) { // 2 var distanceDictionary = polyCollider.points.ToDictionary( position => Vector2.Distance(hit.point, polyCollider.transform.TransformPoint(position)), position => polyCollider.transform.TransformPoint(position)); // 3 var orderedDictionary = distanceDictionary.OrderBy(e => e.Key); return orderedDictionary.Any() ? orderedDictionary.First().Value : Vector2.zero; } Если вам не знакомы запросы LINQ, то этот код может показаться какой-то сложной магией C#.
Если это так, то не бойтесь. LINQ самостоятельно делает за нас много работы:
- Этот метод получает два параметра — объект RaycastHit2D и PolygonCollider2D. Все камни на уровне имеют коллайдеры PolygonCollider2D, поэтому если мы всегда будем использовать фигуры PolygonCollider2D, то сработает отлично.
- Здесь начинается магия запросов LINQ! Тут мы преобразуем коллекцию точек полигонального коллайдера в словарь позиций Vector2 (значение каждого элемента словаря является самой позицией), а ключу каждого элемента присваивается значение расстояния от этой точки до позиции игрока player (значение float). Иногда здесь происходит и кое-что ещё: получившаяся позиция преобразуется в пространство мира (по умолчанию позиции вершин коллайдера хранятся в локальном пространстве, т.е. в локальном относительно объекта, которому принадлежит коллайдер, а нам нужны позиции в пространстве мира).
- Словарь упорядочен по ключам. Другими словами, по ближайшему к текущей позиции игрока расстоянию. Возвращается ближайшее расстояние, то есть любая точка, возвращаемая этим методом, является точкой коллайдера между игроком и текущей точкой шарнира верёвки!
Вернёмся в скрипт RopeSystem.cs и добавим вверху новую приватную переменную поля: private Dictionary wrapPointsLookup = new Dictionary(); Мы воспользуемся ею для отслеживания позиций, вокруг которых может обернуться верёвка.
В конце метода Update() найдите конструкцию else, в которой содержится crosshairSprite.enabled = false; и добавьте следующее:
// 1 if (ropePositions.Count > 0) { // 2 var lastRopePoint = ropePositions.Last(); var playerToCurrentNextHit = Physics2D.Raycast(playerPosition, (lastRopePoint — playerPosition).normalized, Vector2.Distance(playerPosition, lastRopePoint) — 0.1f, ropeLayerMask); // 3 if (playerToCurrentNextHit) { var colliderWithVertices = playerToCurrentNextHit.collider as PolygonCollider2D; if (colliderWithVertices != NULL) { var closestPointToHit = GetClosestColliderPointFromRaycastHit(playerToCurrentNextHit, colliderWithVertices); // 4 if (wrapPointsLookup.ContainsKey(closestPointToHit)) { ResetRope(); return; } // 5 ropePositions.Add(closestPointToHit); wrapPointsLookup.Add(closestPointToHit, 0); distanceSet = false; } } } Объясним этот фрагмент кода:
- Если в списке ropePositions хранятся какие-то позиции, то…
- Выстреливаем из позиции игрока в направлении игрока, смотрящего на последнюю позицию верёвки из списка — опорную точку, в которой крюк-кошка прицепился к камню — с расстоянием raycast равным расстоянию между игроком и позицией опорной точки верёвки.
- Если raycast с чем-то сталкивается, то коллайдер этого объекта безопасно приводится к типу PolygonCollider2D. Пока он является настоящим PolygonCollider2D, ближайшая позиция вершины этого коллайдера возвращается с помощью написанного нами ранее метода как Vector2.
- Проверяется wrapPointsLookup, чтобы убедиться, что та же позиция не проверяется снова. Если она проверяется, то мы сбрасываем верёвку и обрезаем её, роняя игрока.
- Затем обновляется список ropePositions: добавляется позиция, вокруг которой должна обернуться верёвка. Также обновляется словарь wrapPointsLookup. Наконец, сбрасывается флаг distanceSet, чтобы метод UpdateRopePositions() мог переопределить расстояния верёвки с учётом новой длины верёвки и сегментов.
В ResetRope() добавим следующую строку, чтобы словарь wrapPointsLookup очищался каждый раз, когда игрок отсоединяет верёвку: wrapPointsLookup.Clear(); Сохранитесь и запустите игру. Выстрелите крюком-кошкой в камень над слизняком и воспользуйтесь инструментом Move в окне Scene, чтобы переместить слизняка за несколько каменных выступов.
Вот так мы научили верёвку оборачиваться вокруг объектов!
Технология соединения прутьев крючком
Технология соединения прутьев арматуры для фундамента достаточно проста и не обусловливается типом крючка: вязальная проволока, так или иначе, затягивается петлей, соединяя тем самым металлические прутья.
Вязка арматуры происходит после выполнения подготовительных работ и монтажа вертикальных прутьев. Для монтажа арматуры используют рабочий чертеж монолитной конструкции.
На практике существует две основных технологии вязки:
Чаще всего вяжут первым способом, так как он самый простой: обучиться ему можно за несколько минут, а допустить ошибку при работе достаточно сложно. С другой стороны, вязка встык, в теории, хороша для угловых элементов.
Важно! В работе следует использовать только обожженную проволоку с круглым профилем и диаметром в 1 мм, так как она отличается гибкостью и эластичностью: хорошо прилегает к прутьям и не рвется при вязке.
Принцип вязания арматуры одной петлей на первых этапах не зависит от типа крючка. Различия в работе разными инструментами будет только в способе вращения стержня: кистью, по инерции или автоматически.
Чтобы соединить прутья каркаса необходимо:
Схема типов проволочных узлов при ручном способе вязки.
Надежность связки проверяется не силой натяжки проволоки (если перетянуть ее, то проволока может легко порваться), а мобильностью прутьев.
Деревянные качели для дачи
Выбор модели
Чертежи как сделать качели из дерева позволят выбрать подходящий вариант.
Большинство владельцев загородных участков и дач приезжают на отдых всей семьей. Учитывая увлечения современной молодежи, заинтересовать их подобной поездкой будет непросто, а в отсутствие элементарных развлечений эта затея и вовсе становится нереальной.
Другое дело – поездка на дачу, оборудованную с любовью и умом, где есть не только элементарные удобства, но средства организации досуга.
Для взрослого досуга на участке оборудуют зону барбекю, приспособления для рыбалки, различные беседки и лавочки в тени деревьев. Детям по душе активный отдых, и тут как нельзя лучше подойдут хорошие качели.
Хороший отдых должен быть правильно организован.
Важно заранее рассмотреть различные варианты конструкций и моделей, чтобы выбрать наиболее подходящий вариант. Существуют самые разные чертежи качелей своими руками из дерева, и ваша задача – сделать взвешенный выбор.
Первый вопрос, на который необходимо ответить, это вопрос о назначении снаряда. Будет ли это чисто детское развлечение, будут ли они стационарными или переносными, одноместными или семейными и т.д.
Возможны самые неожиданные решения.
Мы вкратце перечислим наиболее распространенные варианты конструкций:
Именно стационарная модель в полной мере соответствует представлениям о комфорте и безопасности.
Чтобы понять, как сделать качели на дереве – много ума не требуется, а вот для изготовления качественной и надежной стационарной модели придется немножко напрячься.
Абордажный крюк
Абордажный крюк | |
Информация | |
Используется: | Всеми классами |
Слот: | Предмет действия |
Выпущено: | Обновление от 22 декабря 2014 (Шмождество 2014) |
Доступность: | Стандартное |
Переименование : | Да |
Доступные качества | |
Характеристики | |
Абордажный крюк 1–го уровня Достается на 100% быстрее |
Нажмите и удерживайте клавишу действия, чтобы выстрелить канатом.
Крюк можно выбрать вручную, нажав slot6, а затем выстрелить кнопкой основного огня.
Можно использовать в играх режима Супер-Манн или на особых серверах.
— это стандартный предмет слота «Действие» для всех классов. Предмет можно использовать для перемещения от одного места к другому в игровом режиме Супер-Манн.
Если Абордажный крюк экипирован, то удерживая клавишу действия, игрок выстрелит крюком с канатом в направление, куда был направлен его прицел. Крюк останется прикреплённым к поверхности до тех пор, пока игрок не отпустит клавишу. Если крюк попадает в стену, потолок или другую поверхность, то игрока притянет к этому же месту по прямолинейной траектории, а по достижении указанного места – крючок остается там вместе с игроком, пока клавиша действия не будет отпущена. Это позволяет игрокам быстро перемещаться по карте и зависать на стенах и потолках на нужное им время. Шпион может использовать Абордажный крюк, будучи невидимым или замаскированным.
Если на пути перемещающегося к своему крюку игрока появится препятствие, то он попытается его обойти и продолжит движение. Нажатие клавиши прыжка отсоединит крюк и подбросит игрока вверх, придав игроку дополнительный импульс в вертикальном направлении. Обратите внимание, крюком нельзя выстрелить в небо.
Содержание
Демонстрация
Предыдущие изменения
Добавлена новая иконка в рюкзаке для Абордажного крюка.
Приступаем к работе
Скачайте заготовку проекта для этого туториала, а затем откройте его в редакторе Unity. Для работы необходима версия Unity 2022.1 или выше.
Откройте сцену Game из папки Scenes и посмотрите, с чего мы начнём:
Пока у нас есть простой персонаж игрока (слизняк) и висящие в воздухе камни.
Важными компонентами GameObject Player пока являются capsule collider и rigidbody, которые позволяют ему взаимодействовать с физическими объектами на уровне. Также к персонажу прикреплён простой скрипт движения (PlayerMovement), позволяющий ему скользить по земле и выполнять простые прыжки.
Нажмите на кнопку Play, чтобы запустить игру, и попробуйте управлять персонажем. A и D перемещают его влево/вправо, а при нажатии на пробел он совершает прыжок. Постарайтесь не соскользнуть и не упасть со скалы, иначе погибнете!
Основы управления у нас уже есть, но самой большой проблемой сейчас является отсутствие крюков-кошек.
Лестница для крыши: от чертежей до установки
Любой рачительный домовладелец периодически проверяет, в каком техническом состоянии находится его жилище. Это единственная возможность своевременно обнаружить дефекты и разрушения, даже если они незначительные. Даже они когда-то могут обернуться большой проблемой, для решения которой потребуются масштабные работы и достаточно большие вложения.
Когда речь идет о техобслуживании или ремонте кровли, то трудно представить, что можно обойтись без использования особых приспособлений, по которым удобно перемещаться и сохранять равновесие. Например, чтобы свободно перемещаться по кровле практикуется лестница для конька крыши с крюком. Им цепляют за конек и выполняют работы, по необходимости стоя или сидя, причем без добавочного закрепления.
Чертежи с учетом нужных размеров и габаритов будущего изделия совсем нетрудно подготовить самостоятельно. В принципе здесь нет ничего сложного, важно все правильно рассчитать и затем точно смонтировать приспособление.
Куда двигаться дальше?
Снова запустите игру и на этот раз нажимайте клавиши со стрелками или W/S, чтобы двигаться вверх-вниз по верёвке.
Готовый проект этой части туториала можно скачать здесь.
Мы прошли долгий путь — от не умеющего качаться размазни-слизняка до акробатического беспанцирного брюхоногого моллюска!
Вы узнали, как создать систему прицеливания, которая может выстреливать крюк-кошку в любой объект, имеющий коллайдер, цепляться за него и одновременно качаться на нём, оборачиваясь на динамической верёвке вокруг граней объектов! Отличная работа.
Однако здесь отсутствует важная функция — верёвка не может «раскручиваться», когда это необходимо.
Во второй части туториала мы будем решать эту задачу.
Но если вы готовы рискнуть, то почему бы не попробовать сделать это самостоятельно? Для этого можно использовать словарь wrapPointsLookup.
Форум самодельщиков: стреляющий крюк – Форум самодельщиков
стреляющий крюк или как то так
#1 Black_Hunter
#2 TROY
#3 Black_Hunter
#4 Stirlitz
Идешь в магазин покупаешь гарпун, верёвку и кошку. Меняешь верёвку гарпуна на более длинную и вместо стрелы ставишь кошку. Единственное эта хрень не будет тебя притягивать!!
#5 Black_Hunter
Берем старый и не нужный зонтик, снимаем ткань, отрываем спицы. Закрепляем пружину внутри наружной трубки, к этой же трубке крепим проволкой спицу и затачиваем. Закрываем “зонтик”. Пользуемся.
#6 Fiery_Wanderer
#7 Имахара
(27.03.2011, 20:14) ——————————————— Вот: Разрушители мифов сделали лебедку (электромоторчик небольших размеров), с помощью которого они поднялись на крышу 2-этажного дома (8м.) за 20 секунд при уже заброшенном абордажном крюке. Миниатюрный геройский подъемник сделали за 2 дня, но он не имел заднего хода. т.е. спуска вниз. Для спуска вниз надо было перерезать тросс.
Добавляем способность раскачивания
Слизняк висит на верёвке довольно статично. Чтобы исправить это, мы можем добавить способность раскачивания.
Для этого нам нужно получить позицию, перпендикулярную к позиции раскачивания вперёд (вбок), вне зависимости от угла, под которым он смотрит.
Откройте PlayerMovement.cs и добавьте в верхнюю часть скрипта две следующие публичные переменные:
public Vector2 ropeHook; public float swingForce = 4f; Переменной ropeHook будет присваиваться любая позиция, в которой находится крюк верёвки в настоящее время, а swingForce — это значение, которое мы используем для добавления движения раскачивания.
Замените метод FixedUpdate() новым:
void FixedUpdate() { if (horizontalInput < 0f || horizontalInput > 0f) { animator.SetFloat(«Speed», Mathf.Abs(horizontalInput)); playerSprite.flipX = horizontalInput < 0f; if (isSwinging) { animator.SetBool(«IsSwinging», true); // 1 — получаем нормализованный вектор направления от игрока к точке крюка var playerToHookDirection = (ropeHook — (Vector2)transform.position).normalized; // 2 — Инвертируем направление, чтобы получить перпендикулярное направление Vector2 perpendicularDirection; if (horizontalInput < 0) { perpendicularDirection = new Vector2(-playerToHookDirection.y, playerToHookDirection.x); var leftPerpPos = (Vector2)transform.position — perpendicularDirection * -2f; Debug.DrawLine(transform.position, leftPerpPos, Color.green, 0f); } else { perpendicularDirection = new Vector2(playerToHookDirection.y, -playerToHookDirection.x); var rightPerpPos = (Vector2)transform.position + perpendicularDirection * 2f; Debug.DrawLine(transform.position, rightPerpPos, Color.green, 0f); } var force = perpendicularDirection * swingForce; rBody.AddForce(force, ForceMode2D.Force); } else { animator.SetBool(«IsSwinging», false); if (groundCheck) { var groundForce = speed * 2f; rBody.AddForce(new Vector2((horizontalInput * groundForce — rBody.velocity.x) * groundForce, 0)); rBody.velocity = new Vector2(rBody.velocity.x, rBody.velocity.y); } } } else { animator.SetBool(«IsSwinging», false); animator.SetFloat(«Speed», 0f); } if (!isSwinging) { if (!groundCheck) return; isJumping = jumpInput > 0f; if (isJumping) { rBody.velocity = new Vector2(rBody.velocity.x, jumpSpeed); } } } Основные изменения здесь заключаются в том, что сначала проверяется флаг isSwinging, чтобы действия выполнялись только когда слизняк висит на верёвке, а также мы добавляем перпендикуляр к углу слизняка, указывающий на его текущую опорную точку в верхней части верёвки, но перпендикулярный направлению его качания.
- Получаем нормализованный вектор направления от игрока к точке закрепления крюка.
- В зависимости от того, качается ли слизняк влево или вправо, перпендикулярное направление вычисляется с помощью playerToHookDirection. Также добавлен отладочный вызов отрисовки, чтобы при желании можно было увидеть его в редакторе.
Откройте RopeSystem.cs и в верхней части блока else внутри if(!ropeAttached) метода Update() добавьте следующее: playerMovement.isSwinging = true; playerMovement.ropeHook = ropePositions.Last(); В блоке if той же конструкции if(!ropeAttached) добавьте следующее: playerMovement.isSwinging = false; Так мы сообщаем скрипту PlayerMovement, что игрок качается, а также определяем последнюю (за исключением позиции игрока) позицию верёвки — иными словами, опорную точку верёвки. Это необходимо для вычисления перпендикулярного угла, которое мы только что добавили в скрипт PlayerMovement.
Вот как это выглядит, если включить в запущенной игре gizmos и нажимать A или D для раскачивания влево/вправо:
Форум самодельщиков: стреляющий крюк – Форум самодельщиков
стреляющий крюк или как то так
#1 Black_Hunter
#2 TROY
#3 Black_Hunter
#4 Stirlitz
Идешь в магазин покупаешь гарпун, верёвку и кошку. Меняешь верёвку гарпуна на более длинную и вместо стрелы ставишь кошку. Единственное эта хрень не будет тебя притягивать!!
#5 Black_Hunter
Берем старый и не нужный зонтик, снимаем ткань, отрываем спицы. Закрепляем пружину внутри наружной трубки, к этой же трубке крепим проволкой спицу и затачиваем. Закрываем “зонтик”. Пользуемся.
#6 Fiery_Wanderer
Типы лестниц для крыши
Обратите внимание! Монтажная лестница для работы на крыше требуется для любого типа кровли, даже, на первый взгляд, прочные полимерные материалы на шатровых крышах, прогибаются под локальным механическим воздействием, а у битумных черепиц осыпается защитная каменная крошка. Все это приводит к деформации защитного слоя и нарушению гидроизоляции.
Наиболее распространенными видами кровельных лестниц являются:
Такие монтажные приспособления, изготавливаемые из стали, алюминия или дерева предназначены для монтажа на вальмовых типах крыш. Простота конструкции позволяет самостоятельно (без привлечения специалиста) собрать лестницу из отдельных деталей. Лестница на крышу своими руками – интересное, а самое главное полезное строительное мероприятие, которое в перспективе обязательно оправдает затраченные средства, время и трудовые ресурсы.
Важно! В процессе установки пристенной лестницы необходимо соблюсти все требования техники безопасности. Расстояние от верхней ступени до карниза не должно превышать 10 см, а зазор между лестницей и стеной должен быть минимум 20 см. В том месте, где лестница переходит на кровлю необходимо установить усиленные поручни, для облегчения процесса вылазки на крышу.
Монтажная лестница на двухскатном типе крыши крепится с применением усиленных кронштейнов, которые пропускаются сквозь кровлю для более надежной фиксации. В места соединения обязательно нужно подложить резиновые прокладки, также их можно заменить любым другим герметиком. Секции последовательно соединяются и крепятся к кровле, конечный элемент надежно фиксируется на коньке. От качественно проведенных работ по установке кровельной лестницы, зависит не только эстетика дома, но и жизнь человека, который забирается на крышу.
Важные акценты, которые обязательно нужно учитывать при устройстве лестницы
Разобравшись с тем, как сделать кровельную лестницу своими руками, необходимо остановиться и особенностях ее монтажа и эксплуатации:
Кроме того, нужно помнить самое главное правило (неписаное) строителя: «Если один какой-нибудь крепеж деформировался или того хуже вышел из строя и нет возможности его заменить, или место для крепежа слишком хлипкое, то лестницу обязательно нужно переставить в другое более надежное место». В один из «ответственных» моментов, это может спасти жизнь.
Добавление спуска по верёвке
Пока у нас нет возможности перемещаться вверх-вниз по верёвке. Хоть в реальной жизни слизняк не мог бы с лёгкостью подниматься и опускаться по верёвке, но это же игра, в которой может случиться что угодно, верно?
В верхнюю часть скрипта RopeSystem добавим две новых переменных поля:
public float climbSpeed = 3f; private bool isColliding; climbSpeed будет задавать скорость, с которой слизняк может двигаться вверх и вниз по верёвке, а isColliding будет применяться как флаг для определения того, можно ли увеличивать или уменьшать свойство расстояния distance joint верёвки.
Добавим такой новый метод:
private void HandleRopeLength() { // 1 if (Input.GetAxis(«Vertical») >= 1f && ropeAttached && !isColliding) { ropeJoint.distance -= Time.deltaTime * climbSpeed; } else if (Input.GetAxis(«Vertical») < 0f && ropeAttached) { ropeJoint.distance += Time.deltaTime * climbSpeed; } } Этот блок if..elseif считывает ввод по вертикальной оси (вверх/вниз или W/S на клавиатуре), и с учётом флагов ropeAttached iscColliding увеличивает или уменьшает расстояние ropeJoint, создавая эффект удлинения или укорачивания верёвки.
Прицепим этот метод, добавив его вызов в конец Update():
HandleRopeLength(); Также нам понадобится способ задания флага isColliding.
В нижнюю часть скрипта добавьте два следующих метода:
void OnTriggerStay2D(Collider2D colliderStay) { isColliding = true; } private void OnTriggerExit2D(Collider2D colliderOnExit) { isColliding = false; } Эти два метода являются нативными методами базового класса скриптов MonoBehaviour.
Если Collider в текущий момент касается другого физического объекта в игре, то постоянно будет срабатывать метод OnTriggerStay2D, присваивая флагу isColliding значение true. Это значит, что когда слизняк касается камня, флагу isColliding присваивается значение true.
Метод OnTriggerExit2D срабатывает, когда один коллайдер покидает область другого коллайдера, присваивая флагу значение false.
Имейте в виду: метод OnTriggerStay2D может быть очень затратным по вычислениям, поэтому используйте его аккуратно.
Требуемые инструменты
В основном монтажную лестницу выполняют из деревянных брусов, в связи с этим, тому, кто решил самостоятельно сделать приспособление для ремонта крыши не обойтись без следующих стройматериалов и инструментов:
Обратите внимание! Длина доски выбирается в соответствии с размерами крыши, потому в каждом случае габариты изделия подбираются индивидуально – единых стандартов в этом плане не существует. Кроме того, лестница для кровельных работ дольше прослужит, если вместо привычных гвоздей использовать каленные саморезы, которые не окисляются и не изнашиваются под воздействием природных явлений.
Источник
Какие кирки есть в Террарии?
Как написано на вики сайте, всего в игре существует 27 кирок, которые условно можно разделить на несколько групп.
- Медная, оловянная, кактусовая, железная, свинцовая, серебряная кирки …
- Вольфрамовая и костяная кирки …
- Конфетная, золотая и платиновая кирки …
- Кошмарная и Смертоносная кирка …
- Адская кирка и Акула расхитителя
Интересные материалы:
Как высчитывается компенсация за отпуск при увольнении? Как высчитывать среднесписочную численность? Как высушить пол под линолеумом? Как высушить тыквенные семечки быстро? Как высыпает корь? Как вытащить насадку с перфоратора? Как вытащить серную пробку из уха ребенка? Как выучиться на пилота самолета? Как вывести березку с участка? Как вывести человека из состава учредителей?