Подобный способ взлома всяких сундуков, дверей и тому подобное, можно встретить не только в игре Skyrim, но и других, например, Dying Light. Конечно, в каждой игре есть какие-то свои тонкости, но мы попробуем реализовать основное. Итак, одной клавишей мы регулируем поворот «ключа» в замке, а мышкой контролируем угол наклона отмычки.
Предусмотрено три угла, которые строятся на базовом, а он определяется рандомно. Первый угол позволяет повернуть замок до второго угла, а второй до третьего, третий же угол является открывающим. Иначе говоря, когда отмычка близка к нужной позиции, замок можно будет повернуть до определенного придела. Таким образом, можно как бы «нащупать» нужное место.
Чтобы было понятней насчет углов, смотрим рисунок:
В начале определяется targetAngle, и на этой основе, исходя из указанных настроек сложности, высчитываются три угла. Угол помеченный зеленой стрелкой, является открывающим замок. Остальные два угла, позволяют только провернуть замок до своих границ.
Skyrim СЕКРЕТ ВЗЛОМА 100% БЫСТРАЯ ПРОКАЧКА ДО 100
Модель замка может быть любой:
Наш вариант собран из стандартных объектов. Здесь значение имеет иерархия объектов и опорные точки.
Внимательно изучите строение нашего демо замка, чтобы в дальнейшем без проблем использовать реальные модели. Демо проект доступен для скачивания, ниже по тексту.
Теперь сам скрипт:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Lockpicking : MonoBehaviour < private enum Mode [SerializeField] private float sensitivityLockpick = 50; [SerializeField] private float sensitivityKeyhole = 35; [SerializeField] private float lockTime = 0.25f; [SerializeField] [Range(10, 30)] private int stepAngle = 20; [SerializeField] [Range(1, 10)] private int shakePower = 5; [SerializeField] private Mode lockMode; [SerializeField] [Range(2, 30)] private int easyMode; [SerializeField] [Range(2, 30)] private int mediumMode; [SerializeField] [Range(2, 30)] private int hardMode; [SerializeField] private Transform lockpick; [SerializeField] private Transform lockpickPivot; [SerializeField] private Transform keyhole; [SerializeField] private Transform keyholePivot; private float keyholeRotate, lockpickRotate, min, max, stepMin_A, stepMax_A, stepMax_B, stepMin_B, lockLimit, keyholeTime; private int targetAngle, offsetAngle; private bool isUnlock, stop; private Vector3 originalAngles; public bool IsUnlock < get< return isUnlock; >> void Awake() < lockpick.SetParent(lockpickPivot); keyhole.SetParent(keyholePivot); originalAngles = lockpickPivot.eulerAngles; CalculateAngles(); >void CalculateAngles() // находим углы, определяем допустимые диапазоны < targetAngle = Random.Range(-90, 90); switch(lockMode) < case Mode.easy: offsetAngle = easyMode; break; case Mode.medium: offsetAngle = mediumMode; break; case Mode.hard: offsetAngle = hardMode; break; >if(targetAngle > 0) < offsetAngle = targetAngle — offsetAngle; >else < offsetAngle = targetAngle + offsetAngle; >min = Mathf.Min(offsetAngle, targetAngle); max = Mathf.Max(offsetAngle, targetAngle); if(max > 0) < stepMin_A = min — (stepAngle/2); stepMax_A = min; stepMin_B = stepMin_A — stepAngle; stepMax_B = stepMin_A; >else < stepMax_A = max + (stepAngle/2); stepMin_A = max; stepMax_B = stepMax_A + stepAngle; stepMin_B = stepMax_A; >> void ShakeLockpick() // дрожание отмычки < if(isUnlock) return; stop = true; Vector3 rnd = Random.insideUnitSphere * shakePower; lockpickPivot.eulerAngles = originalAngles + new Vector3(rnd.x, rnd.y, lockpickPivot.eulerAngles.z); >void ShakeLockpickReset() < stop = false; lockpickPivot.eulerAngles = new Vector3(originalAngles.x, originalAngles.y, lockpickPivot.eulerAngles.z); >void KeyholeControl() // контроль вращения замка < if(CheckRange() Input.GetAxis(«Horizontal») < 0) < if(!stop) keyholeRotate += sensitivityKeyhole * Time.deltaTime; if(keyholeRotate >= 90) < stop = true; isUnlock = true; >else if(keyholeRotate >= lockLimit) < ShakeLockpick(); >> else if(!CheckRange() Input.GetAxis(«Horizontal») < 0) < keyholeTime += Time.deltaTime; if(keyholeTime < lockTime) < keyholeRotate += sensitivityKeyhole * Time.deltaTime; >ShakeLockpick(); > else < keyholeTime = 0; lockLimit = 90; ShakeLockpickReset(); keyholeRotate -= sensitivityKeyhole * Time.deltaTime; >keyholeRotate = Mathf.Clamp(keyholeRotate, 0, lockLimit); keyholePivot.eulerAngles = new Vector3(keyholePivot.eulerAngles.x, keyholePivot.eulerAngles.y, -keyholeRotate); > void LockpickControl() // управление отмычкой < if(Input.GetAxis(«Mouse X») < 0) < lockpickRotate += sensitivityLockpick * Time.deltaTime; >else if(Input.GetAxis(«Mouse X») > 0) < lockpickRotate -= sensitivityLockpick * Time.deltaTime; >lockpickRotate = Mathf.Clamp(lockpickRotate, -90, 90); lockpickPivot.eulerAngles = new Vector3(lockpickPivot.eulerAngles.x, lockpickPivot.eulerAngles.y, lockpickRotate); > bool CheckRange() < if(stop) return false; if(lockpickRotate < stepMax_B lockpickRotate >stepMin_B) < lockLimit = Mathf.Abs(stepMin_B); return true; >else if(lockpickRotate < stepMax_A lockpickRotate >stepMin_A) < lockLimit = Mathf.Abs(stepMin_A); return true; >else if(lockpickRotate < max lockpickRotate >min) < lockLimit = 90; return true; >return false; > void LateUpdate() < if(isUnlock) // если замок открыт, выключаем скрипт < enabled = false; >KeyholeControl(); LockpickControl(); > >
Особых сложностей тут нет, контроль вращения по Z замочной скважины и отмычки.
Основное тут реализовано, тем не менее, может понадобится функция поломки отмычки.
В текущем виде это у нас скажем так, бета версия.
Источник: null-code.ru
Легкий взлом
Описание
Скачать
Если вы похожи на меня и уже взломали каждый замок в игре около 6000 раз в оригинальном Скайриме, еще пару тысяч раз во всех Fallout, то этот мод — простое решение этой непреодолимой скуки, сопровождающей взламывание замков. Я увеличил «зону наилучшего восприятия» каждого замка, независимо от сложности, до размера, достаточного для открытия независимо от того, куда вы поместите отмычку.
Я не могу себе представить каких-либо конфликтов с какими-либо другими модами.
- Если Вам нравится эта, или другие работы en7rop1a — вы можете поддержать его(ее) творчество:
Источник: 4mods.ru
Вскрытие замка. Краткое пособие начинающего взломщика.
Типичный набор взломщика замков состоит из нескольких отмычек, которые выполнены из изогнутых стальных пластин. Мастер начинает работу с того, что опытным глазом определяет механизм замка и выбирает нужную отмычку. Чтобы вскрыть замок, их понадобится как минимум две. Одна нужна для того, чтобы поворачивать механизм, ею может послужить небольшая отвертка. Вторая отмычка предназначена для того, чтобы по очереди выставить штифты в нужное положение.
Штифт — деталь механизма замка, являющаяся стопорным элементом в цилиндровом механизме, препятствующая его повороту.
Взломщик вставляет отвертку в замочную скважину и слегка поворачивает цилиндр до упора. Это делается для того, чтобы штифты, препятствующие повороту механизма, оказались прижаты и не смещались самостоятельно под действием пружин. Отверстия, находящиеся в цилиндре и корпусе замка напротив друг друга немного смещаются, образуя выступы.
Теперь взломщик вставляет вторую отмычку, совершая ею покачивающие движения, пока не добьется, чтобы стык первой пары штифтов совместился с краем цилиндрового механизма. Когда это произойдет, мастер ощутит пальцами еле слышный щелчок. Первая пара штифтов встала на место, и теперь не заходят внутрь цилиндра под действием пружины, а опираются на выступ. Они не войдут обратно до тех пор, пока цилиндр замка нагружен поворачивающим усилием отвертки.
Теперь взломщик переходит к следующей паре штифтов. Как только все штифты окажутся на своих местах, цилиндр провернется и можно будет повернуть замок на один оборот. Если замок закрыт на большее число оборотов, это задержит мастера еще на несколько минут.
Вскрытие отмычками — процесс достаточно несложный, но требует навык. Взломщик должен научиться регулировать степень давления на механизм, внимательно прислушиваться к звукам и тактильным ощущениям. Быстрее всего этот навык можно получить на макете замка, где ученик не только полагается на ощущения, но и наблюдает результат своих действий.
Производители всячески стараются усложнить вскрытие замка отмычками, располагая штифты под разными углами. Но профессионалы утверждают, что для опытного мастера особой разницы нет. Нужно предварительно изучить замок новой конструкции и подобрать к нему соответствующую форму отмычек.
Источник: plombaural.ru