SISTEMA DE PORTA COM SENHA
4 participantes
Página 1 de 1
SISTEMA DE PORTA COM SENHA
Sistema de porta com Senha parecido Com Rusts
Script Da Porta
Script De Trancar a Porta
[/size][/size]
Script De Trocar a Senha
[/size][/size]
Script Do Player
[/size][/size]
Script Dos Botões
[/size][/size]
Script Do Menu
[/size][/size]
Script Da Porta
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(LockDoorController))]
[RequireComponent(typeof(ChangePasswordDoor))]
public class DoorController : MonoBehaviour
{
public float speedOpen = 3;
public float speedClosed = 5;
private float angle = 0;
private bool open = false;
public AudioSource openDoorSound;
public AudioSource closedDoorSound;
public AudioSource erroPassword;
private LockDoorController lockDoorController;
void Start()
{
lockDoorController = GetComponentInChildren<LockDoorController>();
}
void Update()
{
Open();
}
private void Open()
{
angle = open == true ? Mathf.LerpAngle(angle, -90, speedOpen * Time.deltaTime) : Mathf.LerpAngle(angle, 0, speedClosed * Time.deltaTime);
Vector3 endRotation = new Vector3(0, angle, 0);
transform.eulerAngles = endRotation;
}
public void OpenDoor()
{
if (Input.GetKeyDown(KeyCode.E))
{
if (!lockDoorController.IsLocked)
{
if (!open)
{
open = true;
openDoorSound.Play();
}
else
{
open = false;
closedDoorSound.Play();
}
}
else
{
erroPassword.Play();
}
}
}
public bool GetStateDoor()
{
return open;
}
}
Script De Trancar a Porta
[/size][/size]
- Código:
using UnityEngine;
using UnityStandardAssets.Characters.FirstPerson;
using System.Collections;
public class LockDoorController : MonoBehaviour
{
private string password = string.Empty;
public AudioSource erroPassword;
public AudioSource bip;
public GameObject redLed;
public GameObject greenLed;
public bool withPassword = false;
public bool switchOff = false;
private bool interacting = false;
private bool locked;
void Start()
{
interacting = false;
password = string.Empty;
}
void Update()
{
CheckPassword();
LedsController();
}
private void LedsController()
{
redLed.SetActive(locked);
greenLed.SetActive(!locked);
}
private void CheckPassword()
{
if (password.Length >= 4)
withPassword = true;
if (!interacting)
return;
if (locked)
{
if (CheckPasswordTyped())
{
StartCoroutine(Validate());
}
if (ElectronicLookController.lockController.currentPasswordTyped.Length >= 4 && !CheckPasswordTyped())
{
erroPassword.Play();
ElectronicLookController.lockController.Reset();
switchOff = true;
}
}
}
private bool CheckPasswordTyped()
{
if ( ElectronicLookController.lockController.currentPasswordTyped == password && password != string.Empty)
{
return true;
}
return false;
}
public void EnterCode(FirstPersonController firstPersonController)
{
ComeBack(firstPersonController);
InteractWithDoor(firstPersonController);
}
private void InteractWithDoor(FirstPersonController firstPersonController)
{
if (Input.GetKeyDown(KeyCode.E))
{
if (GetComponent<DoorController>().GetStateDoor() && withPassword)
return;
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
interacting = true;
firstPersonController.enabled = false;
if (!withPassword)
{
MenuLock.GetMenuLock.Change();
}
else
{
if (!locked)
{
MenuLock.GetMenuLock.OpenMenu();
}
else
{
ElectronicLookController.lockController.OpenLockController();
}
}
}
}
private void ComeBack(FirstPersonController firstPersonController)
{
if (Input.GetKeyDown(KeyCode.Escape) || switchOff)
{
ElectronicLookController.lockController.Reset();
if (MenuLock.GetMenuLock.gameObject.activeSelf)
{
MenuLock.GetMenuLock.Reset();
}
firstPersonController.enabled = true;
interacting = false;
switchOff = false;
}
}
public IEnumerator Validate()
{
interacting = false;
yield return new WaitForSeconds(0.3f);
switchOff = true;
locked = false;
bip.Play();
yield return new WaitForSeconds(bip.clip.length / 2);
bip.Play();
Debug.Log("Vaidando");
}
public bool IsLocked
{
get{ return locked; }
set{ locked = value; }
}
public bool ThisInteracting
{
get{ return interacting; }
set{ interacting = value; }
}
public string GetPassword
{
get{ return password; }
set{ password = value; }
}
}
Script De Trocar a Senha
[/size][/size]
- Código:
using UnityEngine;
using System.Collections;
public class ChangePasswordDoor : MonoBehaviour {
private LockDoorController lockDoorController;
public AudioSource accept;
public AudioSource locked;
private bool toExchange;
void Start ()
{
lockDoorController = GetComponentInChildren<LockDoorController>();
}
void Update ()
{
if (!lockDoorController.ThisInteracting)
return;
if (MenuLock.GetMenuLock.lockDoor)
{
if (lockDoorController.GetPassword != string.Empty)
{
lockDoorController.IsLocked = !lockDoorController.IsLocked;
lockDoorController.ThisInteracting = false;
MenuLock.GetMenuLock.Reset();
locked.Play();
}
else
{
ChangePassword();
}
}
else if (MenuLock.GetMenuLock.changePassWord)
{
ChangePassword();
}
}
private void ChangePassword()
{
string password = ElectronicLookController.lockController.currentPasswordTyped;
ElectronicLookController.lockController.OpenLockController();
if (password.Length >= 4 && !toExchange)
{
toExchange = true;
}
if (toExchange)
StartCoroutine(Validate(password));
}
private IEnumerator Validate(string password)
{
toExchange = false;
MenuLock.GetMenuLock.Reset();
lockDoorController.GetPassword = password;
yield return new WaitForSeconds(0.3f);
accept.Play();
lockDoorController.switchOff = true;
ElectronicLookController.lockController.Reset();
}
}
Script Do Player
[/size][/size]
- Código:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using UnityStandardAssets.Characters.FirstPerson;
public class PlayerBehaviour : MonoBehaviour
{
private FirstPersonController firstPersonController;
public Text objectName;
public Image sight;
void Start()
{
firstPersonController = GetComponent<FirstPersonController>();
}
void Update()
{
Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));
RaycastHit hitInfo;
bool collided = Physics.Raycast(ray, out hitInfo, 10);
objectName.enabled = collided;
sight.enabled = collided;
if (!collided)
return;
ColliderObject(hitInfo);
}
private void ColliderObject(RaycastHit hitInfo)
{
switch (hitInfo.collider.tag)
{
case "Door":
DoorController doorController = hitInfo.transform.GetComponentInParent<DoorController>();
objectName.text = doorController.GetStateDoor() == true ? "Closed Door" : "Open Door";
doorController.OpenDoor();
break;
case "Lock":
LockDoorController lockDoorController = hitInfo.transform.GetComponentInParent<LockDoorController>();
if (!lockDoorController.IsLocked)
{
objectName.text = lockDoorController.withPassword == false ? "Change Password Code" : "Open Menu";
}
else
{
objectName.text = "Unlock With Code";
}
lockDoorController.EnterCode(firstPersonController);
break;
default:
objectName.text = "";
break;
}
}
}
Script Dos Botões
[/size][/size]
- Código:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public class ElectronicLockController : MonoBehaviour
{
public List<Button> buttons;
public Button deleteButton;
public Text currentPasswordText;
public string currentPasswordTyped = string.Empty;
public static ElectronicLockController lockController;
void Start()
{
AddFuctionsButtons();
currentPasswordTyped = string.Empty;
lockController = this;
gameObject.SetActive(false);
}
void Update()
{
currentPasswordText.text = currentPasswordTyped;
}
private void AddFuctionsButtons()
{
int value = 0;
foreach (Button button in buttons)
{
for (int i = value; i < buttons.Count; i++)
{
button.onClick = new Button.ButtonClickedEvent();
button.onClick.AddListener(() => EnterCode(i));
value++;
break;
}
}
deleteButton.onClick = new Button.ButtonClickedEvent();
deleteButton.onClick.AddListener(() => Backspace());
}
public void EnterCode(int value)
{
if (currentPasswordTyped.Length < 5)
currentPasswordTyped += value.ToString();
}
public void Backspace()//Gambiarra OBSERVAÇÃO
{
if (currentPasswordTyped.Length <= 0)
return;
List<char> lastValue = new List<char>();
lastValue.AddRange(currentPasswordTyped.ToCharArray(0,currentPasswordTyped.Length));
lastValue.RemoveAt((lastValue.Count - 1));
currentPasswordTyped = string.Empty;
foreach (char last in lastValue)
{
currentPasswordTyped += last.ToString();
}
}
public void OpenLockController()
{
gameObject.SetActive(true);
}
public void Reset()
{
currentPasswordTyped = string.Empty;
currentPasswordText.text = "";
gameObject.SetActive(false);
}
}
Script Do Menu
[/size][/size]
- Código:
using UnityEngine;
using System.Collections;
using UnityStandardAssets.Characters.FirstPerson;
public class MenuLock : MonoBehaviour
{
public bool lockDoor;
public bool changePassWord;
public static MenuLock GetMenuLock;
void Start()
{
GetMenuLock = this;
gameObject.SetActive(false);
}
public void locked()
{
lockDoor = true;
gameObject.SetActive(false);
FirstPersonController firstPersonController = FindObjectOfType(typeof(FirstPersonController)) as FirstPersonController;
firstPersonController.enabled = true;
}
public void Change()
{
changePassWord = true;
gameObject.SetActive(false);
}
public void OpenMenu()
{
gameObject.SetActive(true);
}
public void Reset()
{
lockDoor = false;
changePassWord = false;
gameObject.SetActive(false);
}
}
Última edição por weslleyFx em Sex Jul 29, 2016 1:05 pm, editado 1 vez(es)
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: SISTEMA DE PORTA COM SENHA
Mt bom !
RenanMSV- Instrutor
- PONTOS : 4483
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: SISTEMA DE PORTA COM SENHA
faz um tutorial
ninjaEX- Avançado
- PONTOS : 3186
REPUTAÇÃO : 6
Áreas de atuação : no unity,e eu sei o basico de programaçao e sou pessimo de modelar e AMO particulas
Respeito as regras :
Re: SISTEMA DE PORTA COM SENHA
Para fazer um tutorial desse sistema teria que ser em vídeo mais no momento estou sem microfone não que seja muito complicado para fazer um tutorial escrito mais ele bem chatinho de fazer este sistema foi feito com 6 scripts
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: SISTEMA DE PORTA COM SENHA
@Up scripts usados
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Tópicos semelhantes
» Como fazer sistema de porta com senha na unity 2019?
» [RESOLVIDO] Porta com senha!
» Porta(ou algo do tipo) com senha para 2D
» [DÚVIDA] SISTEMA DE CÂMERA E PORTA MALAS DESSE JOGO
» [RESOLVIDO] Gerador de senha
» [RESOLVIDO] Porta com senha!
» Porta(ou algo do tipo) com senha para 2D
» [DÚVIDA] SISTEMA DE CÂMERA E PORTA MALAS DESSE JOGO
» [RESOLVIDO] Gerador de senha
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos