[TUTORIAL] Sistema de PORTAS e CHAVES
+28
Brasil urban simulator 16
kalielson
bymaxbig
220alexandre
Guilherme_cj852
LardosJogos
MarcosSchultz
luiz12345
MeverPlays
JohnRambo
hellkiller
WafGamer
Luke0046
breno1086
perinaldoc
MatadorLkre
waldinei
MatadorLK
GTA_2
ismarspn
alfa_sniper
theallan256
cosmoplay
GibsonDKS
Ninjakill
Joelmarques
IgorUnity
ronito
32 participantes
Página 2 de 2
Página 2 de 2 • 1, 2
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
Adicionar isto no inicio do Update:
- Código:
if(temAChave == true && PrecisaDeChave == true){
EstaTrancada = false;
}
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
tentei enfiar no meu carro e não deu certo.
'=' teria um jeito de guardar a rotação atual, que pode variar com o tempo ai adc a mais quando apertar para abrir, pq ela esta girando mais q 360º e fica variando n volta para aonde tava , mais quando n e a porta do carro funciona bem.
ai eu queria saber se tem como muda o script ,ou eu vou presizar fazer outro tipo de script para isto para min não importa a tranca e sim a porta abrir
'=' teria um jeito de guardar a rotação atual, que pode variar com o tempo ai adc a mais quando apertar para abrir, pq ela esta girando mais q 360º e fica variando n volta para aonde tava , mais quando n e a porta do carro funciona bem.
ai eu queria saber se tem como muda o script ,ou eu vou presizar fazer outro tipo de script para isto para min não importa a tranca e sim a porta abrir
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
Tem que fazer outro tipo de script, referenciando LocalRotation, e trabalhando com Quaternions
É praticamente outra coisa
É praticamente outra coisa
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
Consequi fazer de um outro jeito botei a rotação da roda que vai pro lado no local da porta e mudei o script :D
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
uma duvida, Se eu quiser botar outras portas, mas com o mesmo script obvio, oque tenho que mudar pra não dar conflito?MarcosSchultz escreveu:vou fazer isso na série de terror, quando começar a tratar de mistérios, etc...
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
Não cheguei à usar esse sistema, mais dando uma olhada no script eu vi que tem um sistema de ids das portas e chaves, então é só você configurar as variaveis em cada porta.LardosJogos escreveu:uma duvida, Se eu quiser botar outras portas, mas com o mesmo script obvio, oque tenho que mudar pra não dar conflito?MarcosSchultz escreveu:vou fazer isso na série de terror, quando começar a tratar de mistérios, etc...
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
Tah, mas e se eu quiser fazer tipo, abriu, n pode mais fechar
? tipo, so abre 1 vez
? tipo, so abre 1 vez
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
Nesse caso você vai ter que adaptar esse script para isso, da uma olhada na FixedUpdate do scriptLardosJogos escreveu:Tah, mas e se eu quiser fazer tipo, abriu, n pode mais fechar
? tipo, so abre 1 vez
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
[RequireComponent(typeof(AudioSource))]
public class PORTA : MonoBehaviour {
public bool EstaTrancada,PrecisaDeChave, JaInteragiu;
public AudioClip PortaNormal,PortaTrancada,SomDeChave;
public float distanciaParaAbrir = 3;
public Font Fonte;
public float VelocidadeDeGiro = 60;
public int IDdaPorta;
public static List<int> ListaDeIDs = new List<int>(); // LISTA DE CHAVES QUE O PLAYER CONTEM
private bool MovimentarPorta, EstaAberta,PodeAbrir,AvisoTrancada,temAChave;
private float CronometroDoAviso,CronometroMovimento;
private float RotacaoFechada,RotacaoAberta;
private GameObject Jogador;
void Start (){
EstaAberta = JaInteragiu = AvisoTrancada = temAChave =false;
RotacaoFechada = transform.eulerAngles.y;
RotacaoAberta = transform.eulerAngles.y + 90;
if (RotacaoAberta > 360) {
RotacaoAberta = transform.eulerAngles.y + 90 -360;
}
Jogador = GameObject.FindWithTag ("Player");
if (PrecisaDeChave == true) {
EstaTrancada = true;
}
}
void Update (){
// CHECAHDO SE ESTA PERTO OU NAO
if (Vector3.Distance (transform.position, Jogador.transform.position) <= distanciaParaAbrir) {
PodeAbrir = true;
} else if (Vector3.Distance (transform.position, Jogador.transform.position) > distanciaParaAbrir) {
PodeAbrir = false;
}
//CHECANDO SE ESTA TRANCADA OU NAO... SE NAO ESTIVER, PODE ABRIR
if (EstaTrancada == false && JaInteragiu == false) {
if(Input.GetKeyDown("e") && PodeAbrir == true && MovimentarPorta == false){
GetComponent<AudioSource>().PlayOneShot(PortaNormal);
MovimentarPorta = true;
JaInteragiu = true;
}
}
// SE A PORTA ESTIVER TRANCADA
if (Input.GetKeyDown ("e") && PodeAbrir == true && EstaTrancada == true) {
//CHECA SE O PALYER TEM A CHAVE OU NAO
for(int x = 0; x < ListaDeIDs.Count; x++){
if(IDdaPorta == ListaDeIDs[x]){
temAChave = true;
}else{
temAChave = false;
}
}
// SE O PALYER TEM A CHAVE
if(temAChave == true && PrecisaDeChave == true){
EstaTrancada = false;
if(!GetComponent<AudioSource>().isPlaying){
GetComponent<AudioSource>().PlayOneShot(SomDeChave);
}
}
// SE O PALYER NAO TEM A CHAVE
else {
AvisoTrancada = true;
if(!GetComponent<AudioSource>().isPlaying){
GetComponent<AudioSource>().PlayOneShot(PortaTrancada);
}
}
}
// CRONOMETRO DO AVISO DA PORTA TRANCADA
if (AvisoTrancada == true) {
CronometroDoAviso += Time.deltaTime;
}
if (CronometroDoAviso >= 3) {
AvisoTrancada = false;
CronometroDoAviso = 0;
}
// CRONOMETRO DO MOVIMENTO DA PORTA
if (MovimentarPorta == true) {
CronometroMovimento += Time.deltaTime;
}
if(CronometroMovimento >= 2 + 75/VelocidadeDeGiro){
MovimentarPorta = false;
CronometroMovimento = 0;
EstaAberta = !EstaAberta;
}
}
void FixedUpdate (){
// MOVIMENTO DE ABRIR A PORTA
if (MovimentarPorta == true && EstaAberta == false) {
Vector3 rotacaoFinal = new Vector3(0,RotacaoAberta,0);
transform.eulerAngles = Vector3.Lerp (transform.eulerAngles,rotacaoFinal,Time.deltaTime*(VelocidadeDeGiro/50));
}
// MOVIMENTO DE FECHAR A PORTA
else if (MovimentarPorta == true && EstaAberta == true) {
Vector3 rotacaoFinal = new Vector3(0,RotacaoFechada,0);
transform.eulerAngles = Vector3.Lerp (transform.eulerAngles,rotacaoFinal,Time.deltaTime*(VelocidadeDeGiro/50));
}
}
void OnGUI (){
// AVISO SOBRE PORTA TRANCADA
GUI.skin.font = Fonte;
GUI.skin.label.fontSize = Screen.height / 20;
if (AvisoTrancada == true) {
if(PrecisaDeChave == true){
GUI.Label(new Rect(Screen.width/2-Screen.width/5,Screen.height/2-Screen.height/16,Screen.width/2.5f,Screen.height/8),"Voce precisa de uma chave");
}
else if(PrecisaDeChave == false){
GUI.Label(new Rect(Screen.width/2-Screen.width/5,Screen.height/2-Screen.height/16,Screen.width/2.5f,Screen.height/8),"Nunca ira abrir");
}
}
}
}
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
Ultima duvida, ja que n sei criar topico vo escreve aq msm, eu queria saber como faço pra tipo, no INICIO DA CENA começar uma animação que fiz no cinema 4d, do personagem levantando do chão. e quando acabar poder mechar o personagem, sabe? tipo resident evil 7
me ajuda ae pfv
me ajuda ae pfv
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
LardosJogos escreveu:Ultima duvida, ja que n sei criar topico vo escreve aq msm, eu queria saber como faço pra tipo, no INICIO DA CENA começar uma animação que fiz no cinema 4d, do personagem levantando do chão. e quando acabar poder mechar o personagem, sabe? tipo resident evil 7
me ajuda ae pfv
Você deve visitar a área "Dúvidas em geral" aqui do fórum... é uma das áreas liberadas (está nas regras do fórum)
Lá você pode criar um novo tópico.
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
Marcos, eu preciso de uma ajudinha aki. quando eu aperto "e" para abrir a porta, até mesmo longe da porta ele fica reproduzindo o audio da porta abrindo e quando eu deleto o audio, nao abre a porta nem pega a chave.
220alexandre- Iniciante
- PONTOS : 2997
REPUTAÇÃO : 0
Idade : 26
Respeito as regras :
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
220alexandre escreveu:Marcos, eu preciso de uma ajudinha aki. quando eu aperto "e" para abrir a porta, até mesmo longe da porta ele fica reproduzindo o audio da porta abrindo e quando eu deleto o audio, nao abre a porta nem pega a chave.
Você jogou o jogador na variável dele?
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
Sim, porem eu descobri oq tava dando errado, eu tava compilando o jogo na cena do game e nao na do menu, pequenos erros grandes dores de cabeça :/, mas vlw por responder :DMarcosSchultz escreveu:220alexandre escreveu:Marcos, eu preciso de uma ajudinha aki. quando eu aperto "e" para abrir a porta, até mesmo longe da porta ele fica reproduzindo o audio da porta abrindo e quando eu deleto o audio, nao abre a porta nem pega a chave.
Você jogou o jogador na variável dele?
220alexandre- Iniciante
- PONTOS : 2997
REPUTAÇÃO : 0
Idade : 26
Respeito as regras :
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
olá marcos, em o meu script nao funciona legal, quando eu abro a porta perto ele funciona mas mesmo quando estou longe da porta e aperto "e" ele abre a porta, ja revisei o script muitas vezes e nao achei o erro, me ajuda ae man...MarcosSchultz escreveu:Acabei de atualizar o script... faltava 1 if em uma linha de Input... agora esta certo :D
bymaxbig- Membro
- PONTOS : 3263
REPUTAÇÃO : 5
Idade : 25
Respeito as regras :
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
Tem uma distancia a ser configura para abrir a porta, revise que com certeza você ira encontrar o que esta ocasionando isso.bymaxbig escreveu:olá marcos, em o meu script nao funciona legal, quando eu abro a porta perto ele funciona mas mesmo quando estou longe da porta e aperto "e" ele abre a porta, ja revisei o script muitas vezes e nao achei o erro, me ajuda ae man...MarcosSchultz escreveu:Acabei de atualizar o script... faltava 1 if em uma linha de Input... agora esta certo :D
kalielson- ProgramadorMaster
- PONTOS : 3572
REPUTAÇÃO : 120
Idade : 40
Áreas de atuação : Mestrando em Computação
Respeito as regras :
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
MarcosSchultz escreveu:Acabei de atualizar o script... faltava 1 if em uma linha de Input... agora esta certo :D
marcosSchultz, eu queria que ela deslizasse como porta de Shopping como que eu faço??
Brasil urban simulator 16- Membro
- PONTOS : 3016
REPUTAÇÃO : 2
Respeito as regras :
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
Brasil urban simulator 16 escreveu:MarcosSchultz escreveu:Acabei de atualizar o script... faltava 1 if em uma linha de Input... agora esta certo :D
marcosSchultz, eu queria que ela deslizasse como porta de Shopping como que eu faço??
Depende, você pode usar até animação para isto, dependendo da complexidade do sistema.
Se pa, vou fazer um tutorial sobre porta infraRed
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
como coloca o script para abrir com botão do mouse.
misael pinheiro- Iniciante
- PONTOS : 2726
REPUTAÇÃO : 0
Respeito as regras :
SoullSec- Iniciante
- PONTOS : 2248
REPUTAÇÃO : 0
Idade : 25
Respeito as regras :
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
MarcosSchultz Fiz Uma Porta na Unity onde eu consigo abrila com raycast e um texto que aparece ao olhar pra porta e com uma certa distancia é possivel abrila. So que, eu quero fazer um sistema de chaves e por um audio ao abrir ou quando eu nao estiver a chave ele faz um som de trancada e da um aviso. Por favor me envie algum script. PLS!! e tambem né(obviamente) o script da propria chave igual a esse seu script que tem o id da porta e da chave. escreveu:.
ATENÇÃO, JÁ EXISTE UM SISTEMA DE PORTAS E CHAVES MAIS ATUAL, 100% COMPATÍVEL COM UNITY 5, NESTE LINK:
https://www.schultzgames.com/t2930-tutorial-unity-5-sistema-completo-de-portas-e-chaves?highlight=chaves
SISTEMA ANTIGO ABAIXO:
Vídeo explicando como usar:
Script da porta ( deve conter o nome " PORTA " )
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
[RequireComponent(typeof(AudioSource))]
public class PORTA : MonoBehaviour {
public bool EstaTrancada,PrecisaDeChave;
public AudioClip PortaNormal,PortaTrancada,SomDeChave;
public float distanciaParaAbrir = 3;
public Font Fonte;
public float VelocidadeDeGiro = 60;
public int IDdaPorta;
public static List<int> ListaDeIDs = new List<int>(); // LISTA DE CHAVES QUE O PLAYER CONTEM
private bool MovimentarPorta, EstaAberta,PodeAbrir,AvisoTrancada,temAChave;
private float CronometroDoAviso,CronometroMovimento;
private float RotacaoFechada,RotacaoAberta;
private GameObject Jogador;
void Start (){
EstaAberta = false;
AvisoTrancada = false;
temAChave = false;
RotacaoFechada = transform.eulerAngles.y;
RotacaoAberta = transform.eulerAngles.y + 90;
if (RotacaoAberta > 360) {
RotacaoAberta = transform.eulerAngles.y + 90 -360;
}
Jogador = GameObject.FindWithTag ("Player");
if (PrecisaDeChave == true) {
EstaTrancada = true;
}
}
void Update (){
// CHECAHDO SE ESTA PERTO OU NAO
if (Vector3.Distance (transform.position, Jogador.transform.position) <= distanciaParaAbrir) {
PodeAbrir = true;
} else if (Vector3.Distance (transform.position, Jogador.transform.position) > distanciaParaAbrir) {
PodeAbrir = false;
}
//CHECANDO SE ESTA TRANCADA OU NAO... SE NAO ESTIVER, PODE ABRIR
if (EstaTrancada == false) {
if(Input.GetKeyDown("e") && MovimentarPorta == true && PodeAbrir == true){
CronometroMovimento = 0;
EstaAberta = !EstaAberta;
GetComponent<AudioSource>().Stop ();
GetComponent<AudioSource>().PlayOneShot(PortaNormal);
}
else if(Input.GetKeyDown("e") && PodeAbrir == true && MovimentarPorta == false){
GetComponent<AudioSource>().PlayOneShot(PortaNormal);
MovimentarPorta = true;
}
}
// SE A PORTA ESTIVER TRANCADA
if (Input.GetKeyDown ("e") && PodeAbrir == true && EstaTrancada == true) {
//CHECA SE O PALYER TEM A CHAVE OU NAO
for(int x = 0; x < ListaDeIDs.Count; x++){
if(IDdaPorta == ListaDeIDs[x]){
temAChave = true;
}else{
temAChave = false;
}
}
// SE O PALYER TEM A CHAVE
if(temAChave == true && PrecisaDeChave == true){
EstaTrancada = false;
if(!GetComponent<AudioSource>().isPlaying){
GetComponent<AudioSource>().PlayOneShot(SomDeChave);
}
}
// SE O PALYER NAO TEM A CHAVE
else {
AvisoTrancada = true;
if(!GetComponent<AudioSource>().isPlaying){
GetComponent<AudioSource>().PlayOneShot(PortaTrancada);
}
}
}
// CRONOMETRO DO AVISO DA PORTA TRANCADA
if (AvisoTrancada == true) {
CronometroDoAviso += Time.deltaTime;
}
if (CronometroDoAviso >= 3) {
AvisoTrancada = false;
CronometroDoAviso = 0;
}
// CRONOMETRO DO MOVIMENTO DA PORTA
if (MovimentarPorta == true) {
CronometroMovimento += Time.deltaTime;
}
if(CronometroMovimento >= 2 + 75/VelocidadeDeGiro){
MovimentarPorta = false;
CronometroMovimento = 0;
EstaAberta = !EstaAberta;
}
}
void FixedUpdate (){
// MOVIMENTO DE ABRIR A PORTA
if (MovimentarPorta == true && EstaAberta == false) {
Vector3 rotacaoFinal = new Vector3(0,RotacaoAberta,0);
transform.eulerAngles = Vector3.Lerp (transform.eulerAngles,rotacaoFinal,Time.deltaTime*(VelocidadeDeGiro/50));
}
// MOVIMENTO DE FECHAR A PORTA
else if (MovimentarPorta == true && EstaAberta == true) {
Vector3 rotacaoFinal = new Vector3(0,RotacaoFechada,0);
transform.eulerAngles = Vector3.Lerp (transform.eulerAngles,rotacaoFinal,Time.deltaTime*(VelocidadeDeGiro/50));
}
}
void OnGUI (){
// AVISO SOBRE PORTA TRANCADA
GUI.skin.font = Fonte;
GUI.skin.label.fontSize = Screen.height / 20;
if (AvisoTrancada == true) {
if(PrecisaDeChave == true){
GUI.Label(new Rect(Screen.width/2-Screen.width/5,Screen.height/2-Screen.height/16,Screen.width/2.5f,Screen.height/8),"Voce precisa de uma chave");
}
else if(PrecisaDeChave == false){
GUI.Label(new Rect(Screen.width/2-Screen.width/5,Screen.height/2-Screen.height/16,Screen.width/2.5f,Screen.height/8),"Nunca ira abrir");
}
}
}
}
Script das chaves ( deve conter o nome " CHAVE " )
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(AudioSource))]
public class CHAVE : MonoBehaviour {
public int IDdaChave;
public float DistanciaDaChave = 3;
public AudioClip somChave;
private bool PegouChave;
private GameObject Jogador;
void Start (){
PegouChave = false;
Jogador = GameObject.FindWithTag ("Player");
}
void Update () {
if (Vector3.Distance (transform.position, Jogador.transform.position) < DistanciaDaChave) {
if (Input.GetKeyDown ("e") && PegouChave == false) {
PORTA.ListaDeIDs.Add (IDdaChave);
PegouChave = true;
GetComponent<MeshRenderer> ().enabled = false;
GetComponent<AudioSource> ().PlayOneShot (somChave);
Destroy (gameObject,2.0f);
}
}
}
}
EnderXP- Iniciante
- PONTOS : 2003
REPUTAÇÃO : 0
Idade : 19
Respeito as regras :
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
Script pronto eu vou ter apenas esse que eu postei no link... se precisa de algo específico, vai ter que criar um tópico com a sua dúvida e pedir ajuda pro pessoal para construir o código... eu até faria, mas literalmente estou com 0 de tempo livre... faculdade ta me ferrando
Re: [TUTORIAL] Sistema de PORTAS e CHAVES
- Código:
Olá amigo, teria como me ajudar a trocar, ao em vez de distancia para abrir colocar um raycast de curta distancia ? é porque mesmo não olhando para a porta e pressionando o botão, ela abre isso me incomoda um pouco. Desde já mt obrigado.
marcussant- Iniciante
- PONTOS : 1140
REPUTAÇÃO : 0
Respeito as regras :
Página 2 de 2 • 1, 2
Tópicos semelhantes
» [TUTORIAL] Unity 5 - Sistema Completo de PORTAS E CHAVES
» Unity 5 Sistema de PORTAS e CHAVES
» Novo Asset Sistema de Portas e Chaves
» [RESOLVIDO] Sistema de chaves para abrir portas
» [TUTORIAL] MS Advanced Door System Free (sistema de portas)
» Unity 5 Sistema de PORTAS e CHAVES
» Novo Asset Sistema de Portas e Chaves
» [RESOLVIDO] Sistema de chaves para abrir portas
» [TUTORIAL] MS Advanced Door System Free (sistema de portas)
Página 2 de 2
Permissões neste sub-fórum
Não podes responder a tópicos