[TUTORIAL] PORTA SIMPLES que gira em 2 direções, sempre de acordo com a posição do jogador.
3 participantes
Página 1 de 1
[TUTORIAL] PORTA SIMPLES que gira em 2 direções, sempre de acordo com a posição do jogador.
Olá pessoal, estou trazendo este tutorial simples, que faz uma porta girar sempre na direção do jogador ou ao seu oposto, dependendo de como você configura os colisores.
Primeiro, tenha uma porta com um pivot corretamente ajustado e use este script nela:
Depois, crie 2 BoxCollider com a opção "Trigger" marcadas, e deixe-os como filhos da porta. Deixe um de cada lado da porta, pois eles que vão detectar se o Player está perto da porta ou não, então deixe um do lado direito da porta e o outro do lado esquerdo, e ambos como filhos da porta principal.
Cada um desses BoxCollider deve ter este script abaixo:
Agora, basta ir na sua porta e jogar os 2 BoxCollider nas variáveis que tem lá, e sua porta já irá funcionar.
Quando você estiver perto dela, e apertar o botão do Mouse, a porta irá girar, simples assim. Para inverter o lado da porta, basta inverter jogar os colisores na ordem contrária nas variáveis e pronto :D
Primeiro, tenha uma porta com um pivot corretamente ajustado e use este script nela:
- Código:
using UnityEngine;
using System.Collections;
public class Porta : MonoBehaviour {
float rotacInicYPorta, rotacAddLerp, rotacDestino;
public GameObject HelperLadoDir, HelperLadoEsq;
bool girarPorta;
void Start () {
rotacInicYPorta = transform.eulerAngles.z;
}
void Update () {
if (Input.GetMouseButtonDown (0) && girarPorta == false) {
if (HelperLadoDir.GetComponent<Helper> ().estaDentroDoColisor == true || HelperLadoEsq.GetComponent<Helper> ().estaDentroDoColisor == true) {
if (HelperLadoDir.GetComponent<Helper> ().estaDentroDoColisor == true) {
rotacDestino = rotacAddLerp + 1;
}
if (HelperLadoEsq.GetComponent<Helper> ().estaDentroDoColisor == true) {
rotacDestino = rotacAddLerp - 1;
}
girarPorta = true;
if (rotacDestino > 1) {
rotacDestino = 1;
girarPorta = false;
}
if (rotacDestino < -1) {
rotacDestino = -1;
girarPorta = false;
}
}
}
if (girarPorta == true) {
rotacAddLerp = Mathf.MoveTowards(rotacAddLerp, (rotacDestino), 0.5f*Time.deltaTime);
transform.localEulerAngles = new Vector3 (transform.localEulerAngles.x, rotacInicYPorta + (rotacAddLerp * 90), transform.localEulerAngles.z);
}
if (girarPorta == true && (rotacAddLerp == rotacDestino)) {
girarPorta = false;
}
}
}
Depois, crie 2 BoxCollider com a opção "Trigger" marcadas, e deixe-os como filhos da porta. Deixe um de cada lado da porta, pois eles que vão detectar se o Player está perto da porta ou não, então deixe um do lado direito da porta e o outro do lado esquerdo, e ambos como filhos da porta principal.
Cada um desses BoxCollider deve ter este script abaixo:
- Código:
using UnityEngine;
using System.Collections;
public class Helper : MonoBehaviour {
[HideInInspector]
public bool estaDentroDoColisor;
void OnTriggerEnter (){
estaDentroDoColisor = true;
}
void OnTriggerExit(){
estaDentroDoColisor = false;
}
}
Agora, basta ir na sua porta e jogar os 2 BoxCollider nas variáveis que tem lá, e sua porta já irá funcionar.
Quando você estiver perto dela, e apertar o botão do Mouse, a porta irá girar, simples assim. Para inverter o lado da porta, basta inverter jogar os colisores na ordem contrária nas variáveis e pronto :D
Re: [TUTORIAL] PORTA SIMPLES que gira em 2 direções, sempre de acordo com a posição do jogador.
Legal
rafaelllsd- ProgramadorMaster
- PONTOS : 5243
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: [TUTORIAL] PORTA SIMPLES que gira em 2 direções, sempre de acordo com a posição do jogador.
Legal
Weslley- Moderador
- PONTOS : 5728
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Tópicos semelhantes
» personagem sempre gira de volta a para a direção inicial da idle
» [RESOLVIDO] Movimentar o jogador em 4 direções
» Como faz a câmera seguir e gira em torno do jogador
» MOVIMENTO DO JOGADOR DE ACORDO COM A CAMERA
» Sprite rotacionar de acordo com a posição do mouse
» [RESOLVIDO] Movimentar o jogador em 4 direções
» Como faz a câmera seguir e gira em torno do jogador
» MOVIMENTO DO JOGADOR DE ACORDO COM A CAMERA
» Sprite rotacionar de acordo com a posição do mouse
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos