[TUTORIAL] Porta ativada por alavanca
Página 1 de 1
[TUTORIAL] Porta ativada por alavanca
Vídeo demonstrativo:
o cenário está assim por preguiça....
Para começar precisaremos criar algumas variáveis.
Lembrando que para usar qualquer coisa relacionada ao UI utilizamos a biblioteca UnityEngine.UI
Agora iremos fazer as posições receberem o local exato dos Objetos
Depois disso utilizaremos a void OnTriggerEnter juntamente com a OnTriggerExit
E Agora utilizaremos o Vector3.Lerp para movimentar o objeto de um modo suave
Obs: Todo lerp tem que estar na void Update
Agora estamos quase no final do script terminaremos o tempo com o IEnumerator fina que irá contar o tempo até a próxima ação.
Obs: Você pode usar o Normalize em qualquer numero do script caso não queira utilizar números pequenos.
Lembre-se de fechar as " { } " corretamente....
Agora iremos configurar o script dentro da unity...
1 - Coloque o script em um collider, onde será a área em que o jogador poderá ativar a alavanca, E Marque a opção Is Trigger ou Caso seja um mesh marque convex e em seguida marque a segunda opção
2 - Configure o script a sua preferencia...
3 - Faça o teste e veja se funcionou...
Para começar precisaremos criar algumas variáveis.
- Código:
bool NumPort, Pode; // Variaveis que permitirão ou não certa ação.
public GameObject Porta, Alvo; // Variaveis da porta e seu alvo.
public Text Interagir; // Variavel do texto UI.
public float Velocidade; // Variavel float para controlar a velocidade.
public int Tempo; // Variavel que irá medir o tempo.
Vector3 PosInicial, PosFinal; // Variaveis das posições.
Lembrando que para usar qualquer coisa relacionada ao UI utilizamos a biblioteca UnityEngine.UI
Agora iremos fazer as posições receberem o local exato dos Objetos
- Código:
void Start () {
PosInicial = Porta.transform.position; // Aqui a posição inicial recebe a posição da porta inicialmente
PosFinal = Alvo.transform.position; // Aqui recebe a posição final da porta.
Interagir.enabled = false; // Aqui desativa o texto para não vermos de inicio.
}
Depois disso utilizaremos a void OnTriggerEnter juntamente com a OnTriggerExit
- Código:
void OnTriggerEnter (Collider col){ // Col é o ponto de colisão.
if (col.gameObject.tag == "Player"){ // Quando o col estiver colidindo com o player.
Pode = true; // Pode ficará true e algo poderá ser feito.
Interagir.enabled = true; // O Texto Interagir da UI Ficará visível.
}
}
void OnTriggerExit (Collider col){
if (col.gameObject.tag == "Player"){ // Quando o col não estiver colidindo com o player.
Pode = false; // Pode ficará false e algo não poderá ser feito.
Interagir.enabled = false; // O Texto Interagir da UI Ficará apagará.
}
}
E Agora utilizaremos o Vector3.Lerp para movimentar o objeto de um modo suave
Obs: Todo lerp tem que estar na void Update
- Código:
void Update (){
if (NumPort == true) { // Se o "Num Port" estiver true.
Porta.transform.position = Vector3.Lerp (Porta.transform.position, PosFinal, Velocidade); // O Objeto irá de sua posição atual até a PosFinal na "Velocidade" definida.
StartCoroutine ("Fechar"); //Chamaremos um tempo antes que o NumPort fique false
}
if (NumPort == false) { // Se o "Num Port" estiver false.
Porta.transform.position = Vector3.Lerp (Porta.transform.position, PosInicial, Velocidade); // // O Objeto irá de sua posição atual até a PosInicial na "Velocidade" definida.
}
if (Input.GetKeyDown ("e") && Pode == true) { // Se o botão "e" for pressionado e a variavel bool "Pode" for true.
NumPort = true; // NumPort Ficará true.
}
}
Agora estamos quase no final do script terminaremos o tempo com o IEnumerator fina que irá contar o tempo até a próxima ação.
Obs: Você pode usar o Normalize em qualquer numero do script caso não queira utilizar números pequenos.
- Código:
IEnumerator Fechar (){ // Perceba que tem o mesmo nome da Coroutine que chamamos no Update.
yield return new WaitForSeconds (Tempo); // Definimos aqui o tempo que o NumPort ficará false.
NumPort = false; // NumPort Ficará false após o "Tempo" Definido.
}
}
Lembre-se de fechar as " { } " corretamente....
Agora iremos configurar o script dentro da unity...
1 - Coloque o script em um collider, onde será a área em que o jogador poderá ativar a alavanca, E Marque a opção Is Trigger ou Caso seja um mesh marque convex e em seguida marque a segunda opção
2 - Configure o script a sua preferencia...
3 - Faça o teste e veja se funcionou...
- Script Completo:
Nomeie o script de Portão.- Código:
// Script de PauloFR
// Porta abrir com alavanca
// Retirado de www.schultzgames.com
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Portão : MonoBehaviour {
bool NumPort, Pode;
public GameObject Porta, Alvo;
public Text Interagir;
public float Velocidade;
public int Tempo;
Vector3 PosInicial, PosFinal;
void Start () {
PosInicial = Porta.transform.position;
PosFinal = Alvo.transform.position;
Interagir.enabled = false;
}
void OnTriggerEnter (Collider col){
if (col.gameObject.tag == "Player"){
Pode = true;
Interagir.enabled = true;
}
}
void OnTriggerExit (Collider col){
if (col.gameObject.tag == "Player"){
Pode = false;
Interagir.enabled = false;
}
}
void Update (){
if (NumPort == true) {
Porta.transform.position = Vector3.Lerp (Porta.transform.position, PosFinal, Velocidade);
StartCoroutine ("Fechar");
}
if (NumPort == false) {
Porta.transform.position = Vector3.Lerp (Porta.transform.position, PosInicial, Velocidade);
}
if (Input.GetKeyDown ("e") && Pode == true) {
NumPort = true;
}
}
IEnumerator Fechar (){
yield return new WaitForSeconds (Tempo);
NumPort = false;
}
}
Tópicos semelhantes
» [TUTORIAL] Como spawnar inimigos [Tutorial simples]
» [TUTORIAL] Como fazer porta malas do carro abrir atravez de um botão?
» [TUTORIAL] PORTA SIMPLES que gira em 2 direções, sempre de acordo com a posição do jogador.
» [TUTORIAL] Tutorial criar game framework/engine do zero com JWJGL Java
» [TUTORIAL] Introdução para iniciante e tutorial de Click move com raycast
» [TUTORIAL] Como fazer porta malas do carro abrir atravez de um botão?
» [TUTORIAL] PORTA SIMPLES que gira em 2 direções, sempre de acordo com a posição do jogador.
» [TUTORIAL] Tutorial criar game framework/engine do zero com JWJGL Java
» [TUTORIAL] Introdução para iniciante e tutorial de Click move com raycast
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos