COMO FAZER A PORTA ABRIR SÓ EMPURRANDO ELA COM O PLAYER?
3 participantes
Página 1 de 1
COMO FAZER A PORTA ABRIR SÓ EMPURRANDO ELA COM O PLAYER?
Opa, alguem sabe ou pode me ensinar como fazer isso? O jogo Stay Out Of The House o sistema de porta é assim, o player meio que tem q forçar ir pra frente pra porta ir abrindo sabe? Queria muit saber fazer isso mas não acho nada e os 2 videos que achei de gringo eles não usam script e não funiconou legal.
Capo0529- Iniciante
- PONTOS : 646
REPUTAÇÃO : 0
Respeito as regras :
Re: COMO FAZER A PORTA ABRIR SÓ EMPURRANDO ELA COM O PLAYER?
Vê se esse script pode ter ajudar:
Este script utiliza a variável openForce para definir a força necessária para abrir a porta e a variável openSpeed para definir a velocidade de abertura da porta. O método ApplyForce é chamado quando o jogador aplica força à porta e incrementa a variável currentForce.
Para permitir a alteração da força necessária para abrir a porta pela interface da Unity, você pode adicionar a variável openForce como um campo público na classe e ajustar seu valor diretamente no Inspector.
Exemplo de uso do Método ApplyForce, Uma forma comum de fazer isso é adicionar o script Door ao objeto que representa a porta no seu jogo, e então usar o método GetComponent do Unity para obter uma referência a esse script em outro script. Por exemplo:
Neste exemplo, o script Player obtém uma referência ao script Door no objeto da porta no método Start, usando o método GetComponent. Em seguida, no método Update, o jogador pode aplicar força à porta quando pressionar a tecla de interação (no caso, a tecla Espaço) chamando o método ApplyForce do script Door, passando como argumento a força que o jogador deseja aplicar. Neste exemplo, a força é definida pela variável pushForce que pode ser ajustada no Inspector da Unity.
- Código:
using UnityEngine;
public class Door : MonoBehaviour
{
public float openForce = 5.0f; // Força necessária para abrir a porta
public float openSpeed = 1.0f; // Velocidade de abertura da porta
private bool isOpen = false; // Indica se a porta está aberta ou não
private float currentForce = 0.0f; // Força atual aplicada à porta
private Quaternion initialRotation; // Rotação inicial da porta
void Start()
{
initialRotation = transform.rotation; // Salva a rotação inicial da porta
}
void Update()
{
// Verifica se a porta está fechada e se o jogador está tentando abri-la
if (!isOpen && currentForce >= openForce)
{
// Calcula a nova rotação da porta
Quaternion targetRotation = initialRotation * Quaternion.Euler(0, -90, 0);
// Abre gradualmente a porta até a nova rotação
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * openSpeed);
// Verifica se a porta foi completamente aberta
if (Quaternion.Angle(transform.rotation, targetRotation) < 1.0f)
{
isOpen = true;
}
}
// Verifica se a porta está aberta e se o jogador não está mais forçando a abertura
if (isOpen && currentForce < openForce)
{
// Calcula a nova rotação da porta
Quaternion targetRotation = initialRotation;
// Fecha gradualmente a porta até a nova rotação
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * openSpeed);
// Verifica se a porta foi completamente fechada
if (Quaternion.Angle(transform.rotation, targetRotation) < 1.0f)
{
isOpen = false;
}
}
// Reduz gradualmente a força aplicada à porta
currentForce = Mathf.Lerp(currentForce, 0.0f, Time.deltaTime * 2.0f);
}
// Método chamado quando o jogador aplica força à porta
public void ApplyForce(float force)
{
currentForce += force;
}
}
Este script utiliza a variável openForce para definir a força necessária para abrir a porta e a variável openSpeed para definir a velocidade de abertura da porta. O método ApplyForce é chamado quando o jogador aplica força à porta e incrementa a variável currentForce.
Para permitir a alteração da força necessária para abrir a porta pela interface da Unity, você pode adicionar a variável openForce como um campo público na classe e ajustar seu valor diretamente no Inspector.
Exemplo de uso do Método ApplyForce, Uma forma comum de fazer isso é adicionar o script Door ao objeto que representa a porta no seu jogo, e então usar o método GetComponent do Unity para obter uma referência a esse script em outro script. Por exemplo:
- Código:
public class Player : MonoBehaviour
{
public float pushForce = 10.0f; // Força que o jogador aplica à porta
private Door door; // Referência ao script Door que controla a porta
void Start()
{
// Obtém uma referência ao script Door que está no objeto da porta
door = GetComponent<Door>();
}
void Update()
{
// Aplica força à porta quando o jogador pressiona a tecla de interação
if (Input.GetKeyDown(KeyCode.Space))
{
door.ApplyForce(pushForce);
}
}
}
Neste exemplo, o script Player obtém uma referência ao script Door no objeto da porta no método Start, usando o método GetComponent. Em seguida, no método Update, o jogador pode aplicar força à porta quando pressionar a tecla de interação (no caso, a tecla Espaço) chamando o método ApplyForce do script Door, passando como argumento a força que o jogador deseja aplicar. Neste exemplo, a força é definida pela variável pushForce que pode ser ajustada no Inspector da Unity.
Magnatah- Instrutor
- PONTOS : 3547
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Re: COMO FAZER A PORTA ABRIR SÓ EMPURRANDO ELA COM O PLAYER?
Show! Eu to mexendo um pouco no script, ainda não funcionou mas tenho certeza que é pq eu sou meio leigo e estou entendendo ainda porém nesse ultimo script eu coloquei no player, como faço pra que ao invês de ele apertar espaço ele só encoste e empurre a porta como se estivesse empurrando com o corpo?
Capo0529- Iniciante
- PONTOS : 646
REPUTAÇÃO : 0
Respeito as regras :
Re: COMO FAZER A PORTA ABRIR SÓ EMPURRANDO ELA COM O PLAYER?
Recomendo aprender Lógica de Programação e Depois um curso básico de C# + unity.
Curso de Lógica de Programação (Gustavo Guanabara):
https://www.youtube.com/watch?v=8mei6uVttho&list=PLHz_AreHm4dmSj0MHol_aoNYCSGFqvfXV
Curso básico de C# e Unity (Marcos Schultz):
https://www.youtube.com/watch?v=FPBoOnan298&list=PL0TaCOFAHoO-Wpq6FuN9gwr7WAdPEKUnh
Sobre o seu problema acima, esse tutorial pode te ajudar:
Link: https://www.youtube.com/watch?v=uR2iJZdg6fc&list=PL0TaCOFAHoO9Zx6lG1R8EWTTfJ6DAz6oQ&index=9
Curso de Lógica de Programação (Gustavo Guanabara):
https://www.youtube.com/watch?v=8mei6uVttho&list=PLHz_AreHm4dmSj0MHol_aoNYCSGFqvfXV
Curso básico de C# e Unity (Marcos Schultz):
https://www.youtube.com/watch?v=FPBoOnan298&list=PL0TaCOFAHoO-Wpq6FuN9gwr7WAdPEKUnh
Sobre o seu problema acima, esse tutorial pode te ajudar:
Link: https://www.youtube.com/watch?v=uR2iJZdg6fc&list=PL0TaCOFAHoO9Zx6lG1R8EWTTfJ6DAz6oQ&index=9
Magnatah- Instrutor
- PONTOS : 3547
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Re: COMO FAZER A PORTA ABRIR SÓ EMPURRANDO ELA COM O PLAYER?
Utilize o component HinjeJoint da propria unity, tem tudo que vc precisa lá.Capo0529 escreveu:Opa, alguem sabe ou pode me ensinar como fazer isso? O jogo Stay Out Of The House o sistema de porta é assim, o player meio que tem q forçar ir pra frente pra porta ir abrindo sabe? Queria muit saber fazer isso mas não acho nada e os 2 videos que achei de gringo eles não usam script e não funiconou legal.
diegopds- Mestre
- PONTOS : 3419
REPUTAÇÃO : 52
Idade : 26
Respeito as regras :
Tópicos semelhantes
» Como Abrir Porta do Carro (Capo,PortaMalas, Portas) Mirando Nelas
» como abrir aquela caixa de texto para o player escrever um valor
» como fazer o player aparecer do outro lado da porta quando muda de cena?
» Galera como que faz para abrir a porta do onibus???
» Fazer o player abrir caixas
» como abrir aquela caixa de texto para o player escrever um valor
» como fazer o player aparecer do outro lado da porta quando muda de cena?
» Galera como que faz para abrir a porta do onibus???
» Fazer o player abrir caixas
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos