[TUTORIAL] Como Abrir e Fechar Gavetas - Unity 5
+2
Thalles Br
perinaldoc
6 participantes
Página 1 de 1
[TUTORIAL] Como Abrir e Fechar Gavetas - Unity 5
Olá pessoal sou novo aqui. Estava bolando um script de abrir e fechar gavetas pro meu projeto de jogo de terror. Estava apanhando um pouco no começo, até cheguei a abrir tópico na sessão de dúvidas, mas enfim consegui eu mesmo solucionar o problema e como não sou fominha, , decidi postar aqui os scripts pra quem mais precisar da mesma coisa. São dois scripts simples um vai na câmera do player e o outro vai na gaveta. Lembrando que cada gaveta precisa ter um box collider com trigger ativa para que o RayCast do script da câmera consiga pegar o componente atrelado ao objeto. Vocês podem ajustar a distância de abertura da gaveta como quiserem, mas aconselho a deixar a distância de fechamento da mesma inalterada, visto que cheguei a conclusão que era a melhor possível pra que o fechamento ocorresse com precisão.
Script do Player:
Script da Gaveta:
Esse script funciona baseado no clique do mouse com botão esquerdo, mas você pode adaptar para pressionar de tecla. Não é o estilo Amnesia, utilizei mouse porque é dessa forma que quis fazer no meu projeto. Não precisa manter pressionado, basta clicar pra abrir ou fechar. Além disso também terá sons de fechar e abrir gaveta que vcs podem baixar na net no freesound.org.
Script do Player:
- Código:
using UnityEngine;
using System.Collections;
public class AbrirGavetas : MonoBehaviour {
public float RayLength = 8f;
public GameObject cam;
// Update is called once per frame
void Update () {
if(Input.GetMouseButtonDown(0)) {
Ray ray = Camera.main.ViewportPointToRay (new Vector3(0.5f, 0.5f, 0));
RaycastHit hit;
if(Physics.Raycast(ray, out hit, RayLength)) {
DrawerScript o = hit.collider.GetComponent<DrawerScript>();
if(o!=null) {
o.Use();
}
}
}
}
}
Script da Gaveta:
- Código:
using UnityEngine;
using System.Collections;
public class DrawerScript : MonoBehaviour {
private float smoothTime = 0.1f;
private float maxSpeed = 8f;
public float openDistance = 0.33f, closeDistance = 0.1f;
private bool opening;
private bool opened;
private bool closing;
private bool closed;
private Vector3 origin;
public AudioClip openDrawer, closeDrawer;
private Vector3 velocity = Vector3.zero;
void Start ()
{
origin = transform.position;
closed = true;
opened = false;
closing = false;
opening = false;
}
public void Use()
{
if (opened) {
opened = false;
opening = true;
}
else if (closed) {
closed = false;
closing = true;
}
}
void Update()
{
if (closing) {
Vector3 targetPosition = origin + transform.right * openDistance;
transform.position = Vector3.SmoothDamp(transform.position,targetPosition,ref velocity, smoothTime, maxSpeed);
if(Vector3.Distance(transform.position, targetPosition) < 0.1) {
opening = false;
opened = true;
closing = false;
GetComponent<AudioSource> ().clip = openDrawer;
GetComponent<AudioSource> ().PlayOneShot(GetComponent<AudioSource>().clip);
}
}
else if (opening) {
Vector3 targetPosition = origin - transform.right * closeDistance;
transform.position = Vector3.SmoothDamp(transform.position,origin,ref velocity, smoothTime, maxSpeed);
if(Vector3.Distance(transform.position, targetPosition) < 0.1) {
closing = false;
closed = true;
opening = false;
GetComponent<AudioSource>().clip = closeDrawer;
GetComponent<AudioSource>().PlayOneShot(GetComponent<AudioSource>().clip);
}
}
}
}
Esse script funciona baseado no clique do mouse com botão esquerdo, mas você pode adaptar para pressionar de tecla. Não é o estilo Amnesia, utilizei mouse porque é dessa forma que quis fazer no meu projeto. Não precisa manter pressionado, basta clicar pra abrir ou fechar. Além disso também terá sons de fechar e abrir gaveta que vcs podem baixar na net no freesound.org.
perinaldoc- Membro
- PONTOS : 3420
REPUTAÇÃO : 9
Respeito as regras :
Re: [TUTORIAL] Como Abrir e Fechar Gavetas - Unity 5
Boa vo da uma testada
Thalles Br- Iniciante
- PONTOS : 3355
REPUTAÇÃO : 1
Respeito as regras :
Re: [TUTORIAL] Como Abrir e Fechar Gavetas - Unity 5
Amigo, gostei muito do se codigo, mas tenhos problemas quero fazer a gaveta Abriar para o outro lado e não consigo, acha esta parte. estou começando agora com os script to apando bastante.
se puder me ajudar agradeço.
se puder me ajudar agradeço.
joao natalino- Membro
- PONTOS : 3322
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Como Abrir e Fechar Gavetas - Unity 5
joao natalino escreveu:Amigo, gostei muito do se codigo, mas tenhos problemas quero fazer a gaveta Abriar para o outro lado e não consigo, acha esta parte. estou começando agora com os script to apando bastante.
se puder me ajudar agradeço.
Tente rotacionar o pivot da gaveta... O script trabalha em um eixo específico, então se o seu objeto foi motado no eixo errado, já não vai dar certo
Re: [TUTORIAL] Como Abrir e Fechar Gavetas - Unity 5
Mais uma vez muito obrigado.Como estou aprendendo com vocês!!
joao natalino- Membro
- PONTOS : 3322
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Como Abrir e Fechar Gavetas - Unity 5
A minha gaveta só abre e fecha uma vez depois ela n abre mais, pq?
kingflashh- Iniciante
- PONTOS : 3244
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Como Abrir e Fechar Gavetas - Unity 5
No script (DrawerScript) onde ele pede "Close Distance" deixe em 0.1 e rotacione a gaveta ate conseguir uma posição que funcione e não esqueça de adc um box collider sem trigger.kingflashh escreveu:A minha gaveta só abre e fecha uma vez depois ela n abre mais, pq?
joabr- Mestre
- PONTOS : 3510
REPUTAÇÃO : 178
Idade : 33
Áreas de atuação : Modelagem, textura, animação, partícula e otimização.
Respeito as regras :
Re: [TUTORIAL] Como Abrir e Fechar Gavetas - Unity 5
Mesmo assim se ainda não conseguir, me passa sua gaveta e eu animo ela, então voce aplica nela um script basico com trigger ou ray sei la para executar a animação, tem muitos neste forum.
joabr- Mestre
- PONTOS : 3510
REPUTAÇÃO : 178
Idade : 33
Áreas de atuação : Modelagem, textura, animação, partícula e otimização.
Respeito as regras :
Tópicos semelhantes
» Abrir e Fechar Gavetas
» [TUTORIAL] Como fazer porta malas do carro abrir atravez de um botão?
» Como abrir portas/gavetas com click do mouse, usando raycast!
» [RESOLVIDO] Unity - Como fechar o jogo ao clicar em um botão
» Como abrir modelo de GTA V no Blender/Unity/3D Max
» [TUTORIAL] Como fazer porta malas do carro abrir atravez de um botão?
» Como abrir portas/gavetas com click do mouse, usando raycast!
» [RESOLVIDO] Unity - Como fechar o jogo ao clicar em um botão
» Como abrir modelo de GTA V no Blender/Unity/3D Max
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos