interação com objeto
2 participantes
Página 1 de 1
interação com objeto
Opa, preciso que alguém me ajude nessa questão, assim, quero poder "interagir" com um objeto quando entrar em contato com este, algo como mostra esse vídeo:
Preciso criar um jogo educacional, já tá praticamente pronto, só preciso dessa parte de entrar em contato com alguma coisa e aparecer a pergunta, se a resposta estiver certa a pessoa continua o jogo, se não ele vai precisar responder de novo. Procurei, mas não achei nenhum tutorial assim e preciso do jogo pronto segunda-feira. Agradeço desde já
Preciso criar um jogo educacional, já tá praticamente pronto, só preciso dessa parte de entrar em contato com alguma coisa e aparecer a pergunta, se a resposta estiver certa a pessoa continua o jogo, se não ele vai precisar responder de novo. Procurei, mas não achei nenhum tutorial assim e preciso do jogo pronto segunda-feira. Agradeço desde já
misakki- Iniciante
- PONTOS : 1206
REPUTAÇÃO : 4
Respeito as regras :
Re: interação com objeto
Existe algumas formas de fazer isso, você pode usar um OnTriggerEnter2D, e fazer a pergunta aparecer na UI quando o player entrar no colisor.
Charlesoff- MembroAvançado
- PONTOS : 1780
REPUTAÇÃO : 40
Áreas de atuação : Game dev
Respeito as regras :
Re: interação com objeto
Oh, pode me explicar os passos? Sou nova nisso e tudo que consegui fazer foi vendo tutoriaisCharlesoff escreveu:Existe algumas formas de fazer isso, você pode usar um OnTriggerEnter2D, e fazer a pergunta aparecer na UI quando o player entrar no colisor.
misakki- Iniciante
- PONTOS : 1206
REPUTAÇÃO : 4
Respeito as regras :
Charlesoff- MembroAvançado
- PONTOS : 1780
REPUTAÇÃO : 40
Áreas de atuação : Game dev
Respeito as regras :
Re: interação com objeto
1
Usando uma tecla junto:
Não esqueça de habilitar o isTrigger no colisor.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Damage : MonoBehaviour
{
bool a;
public float timeToLoad = 1f;
public GameObject scoreObj;
void Update()
{
if (a == true)
{
//Aqui você pode fazer a pergunta aparecer na tela
//nesse exemplo do meu game, ele carrega uma cena quando meu player entra em um colisor com a tag
"rock", e o bool 'a' passa a valer true
DontDestroyOnLoad(scoreObj);
SceneManager.LoadScene("Dead");
}
}
void OnTriggerEnter2D(Collider2D obj) //Aqui ele detecta quando meu player entra no colisor usando o .tag
{
if (obj.tag == "rock")
{
a = true;
}
}
}
Usando uma tecla junto:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Damage : MonoBehaviour
{
bool a;
public float timeToLoad = 1f;
public GameObject scoreObj;
void Update()
{
if (a == true && Input.GetKeyDown(KeyCode.F))
{
//Aqui você pode fazer a pergunta aparecer na tela quando o player estiver dentro do colisor e
apertar a tecla F
//nesse exemplo do meu game, ele carrega uma cena quando meu player entra em um colisor
DontDestroyOnLoad(scoreObj);
SceneManager.LoadScene("Dead");
}
}
void OnTriggerEnter2D(Collider2D obj)
{
if (obj.tag == "rock")
{
a = true;
}
}
void OnTriggerExit2D(Collider2D obj) //Aqui detecta quando o player sai, para o 'a", ficar true só quando estou dentro do colisor
{
if (obj.tag == "rock")
{
a = false;
}
}
}
Não esqueça de habilitar o isTrigger no colisor.
Charlesoff- MembroAvançado
- PONTOS : 1780
REPUTAÇÃO : 40
Áreas de atuação : Game dev
Respeito as regras :
Re: interação com objeto
Charlesoff escreveu:1
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Damage : MonoBehaviour
{
bool a;
public float timeToLoad = 1f;
public GameObject scoreObj;
void Update()
{
if (a == true)
{
//Aqui você pode fazer a pergunta aparecer na tela
//nesse exemplo do meu game, ele carrega uma cena quando meu player entra em um colisor com a tag
"rock", e o bool 'a' passa a valer true
DontDestroyOnLoad(scoreObj);
SceneManager.LoadScene("Dead");
}
}
void OnTriggerEnter2D(Collider2D obj) //Aqui ele detecta quando meu player entra no colisor usando o .tag
{
if (obj.tag == "rock")
{
a = true;
}
}
}
Usando uma tecla junto:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Damage : MonoBehaviour
{
bool a;
public float timeToLoad = 1f;
public GameObject scoreObj;
void Update()
{
if (a == true && Input.GetKeyDown(KeyCode.F))
{
//Aqui você pode fazer a pergunta aparecer na tela quando o player estiver dentro do colisor e
apertar a tecla F
//nesse exemplo do meu game, ele carrega uma cena quando meu player entra em um colisor
DontDestroyOnLoad(scoreObj);
SceneManager.LoadScene("Dead");
}
}
void OnTriggerEnter2D(Collider2D obj)
{
if (obj.tag == "rock")
{
a = true;
}
}
void OnTriggerExit2D(Collider2D obj) //Aqui detecta quando o player sai, para o 'a", ficar true só quando estou dentro do colisor
{
if (obj.tag == "rock")
{
a = false;
}
}
}
Não esqueça de habilitar o isTrigger no colisor.
Muito obrigadaa, vou tentar fazer tudo agora mesmo
misakki- Iniciante
- PONTOS : 1206
REPUTAÇÃO : 4
Respeito as regras :
Re: interação com objeto
Para o resto fiz uma base, usando InputField.
Aí você pode deixar como vc quer. Não posso dar scripts prontos, então fiz só um exemplo.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;
using UnityEngine.UI;
public class Damage : MonoBehaviour
{
bool a;
int valorcerto = 1;
public TMP_InputField inputField;
public GameObject pergunta;
public Button botao;
void Start()
{
var myButton = botao.GetComponent<Button>();
myButton.onClick.AddListener(resposta);
pergunta.SetActive(false);
}
void resposta()
{
if (inputField.text == valorcerto.ToString())
{
print("acertou");
}
}
void Update()
{
if (a == true)
{
pergunta.SetActive(true);
}
}
void OnTriggerEnter2D(Collider2D obj)
{
if (obj.tag == "rock")
{
a = true;
}
}
void OnTriggerExit2D(Collider2D obj)
{
if (obj.tag == "rock")
{
a = false;
}
}
}
Aí você pode deixar como vc quer. Não posso dar scripts prontos, então fiz só um exemplo.
Charlesoff- MembroAvançado
- PONTOS : 1780
REPUTAÇÃO : 40
Áreas de atuação : Game dev
Respeito as regras :
Re: interação com objeto
Ah, ok, vou fazer o máximo pra conseguir fazer tudo certinho kkkkkk, obrigada novamente
misakki- Iniciante
- PONTOS : 1206
REPUTAÇÃO : 4
Respeito as regras :
Re: interação com objeto
Moçoo, eu estava tentando fazer aqui, mas acho que não estou fazendo certo, quando o personagem encosta no objeto ele não colide e passa direto, não aparece a pergunta nem nada e queria que depois que ele acertasse, a "tela" saísse e pudesse continuar o jogo, acredito que preciso colocar mais alguma coisa no script do player, mas não sei exatamente o que.. pode me dar uma luz de novo??Charlesoff escreveu:Para o resto fiz uma base, usando InputField.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;
using UnityEngine.UI;
public class Damage : MonoBehaviour
{
bool a;
int valorcerto = 1;
public TMP_InputField inputField;
public GameObject pergunta;
public Button botao;
void Start()
{
var myButton = botao.GetComponent<Button>();
myButton.onClick.AddListener(resposta);
pergunta.SetActive(false);
}
void resposta()
{
if (inputField.text == valorcerto.ToString())
{
print("acertou");
}
}
void Update()
{
if (a == true)
{
pergunta.SetActive(true);
}
}
void OnTriggerEnter2D(Collider2D obj)
{
if (obj.tag == "rock")
{
a = true;
}
}
void OnTriggerExit2D(Collider2D obj)
{
if (obj.tag == "rock")
{
a = false;
}
}
}
Aí você pode deixar como vc quer. Não posso dar scripts prontos, então fiz só um exemplo.
misakki- Iniciante
- PONTOS : 1206
REPUTAÇÃO : 4
Respeito as regras :
Re: interação com objeto
Pode postar seu script aqui para eu ver?
Charlesoff- MembroAvançado
- PONTOS : 1780
REPUTAÇÃO : 40
Áreas de atuação : Game dev
Respeito as regras :
Re: interação com objeto
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;
using UnityEngine.UI;
public class Damage : MonoBehaviour
{
bool a;
int valorcerto = 1;
public GameObject image;
public TMP_InputField inputField;
public GameObject pergunta;
public Button botao;
void Start()
{
var myButton = botao.GetComponent<Button>();
myButton.onClick.AddListener(resposta);
pergunta.SetActive(true);
}
void resposta()
{
if (inputField.text == valorcerto.ToString())
{
print("acertou");
}
}
void Update()
{
if (a == true)
{
pergunta.SetActive(true);
}
}
void OnTriggerEnter2D(Collider2D collider)
{
if(collider.gameObject.tag == "Cherries")
{
a = true;
}
}
void OnTriggerExit2D(Collider2D collider)
{
if (collider.gameObject.tag == "Cherries")
{
a = false;
}
}
}
Charlesoff escreveu:Pode postar seu script aqui para eu ver?
misakki- Iniciante
- PONTOS : 1206
REPUTAÇÃO : 4
Respeito as regras :
Re: interação com objeto
Mudei algumas coisas, e acho que você esqueceu de por o rigidbody no player, configurei o script assim:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using UnityEngine.UI;
public class teste : MonoBehaviour
{
bool a;
int valorcerto = 2;
public GameObject image;
public TMP_InputField inputField;
public GameObject pergunta;
public Button botao;
void Start()
{
var myButton = botao.GetComponent<Button>();
myButton.onClick.AddListener(resposta);
pergunta.SetActive(false);
}
void resposta()
{
if (inputField.text == valorcerto.ToString())
{
Destroy(pergunta);
}
}
void Update()
{
if (a == true)
{
pergunta.SetActive(true);
}
}
void OnTriggerEnter2D(Collider2D collider)
{
if(collider.tag == "Cherries")
{
a = true;
}
}
void OnTriggerExit2D(Collider2D collider)
{
if (collider.tag == "Cherries")
{
a = false;
}
}
}
Charlesoff- MembroAvançado
- PONTOS : 1780
REPUTAÇÃO : 40
Áreas de atuação : Game dev
Respeito as regras :
Re: interação com objeto
Outra coisa, recomendo fazer o script de interação para por nos objetos da cena, e não no Player.
Você pode até criar só um script de problemas matemáticos, onde você possa configurar tudo pelo inspector, e evitar ficar perdendo tempo escrevendo um monte de script.
Você pode até criar só um script de problemas matemáticos, onde você possa configurar tudo pelo inspector, e evitar ficar perdendo tempo escrevendo um monte de script.
Charlesoff- MembroAvançado
- PONTOS : 1780
REPUTAÇÃO : 40
Áreas de atuação : Game dev
Respeito as regras :
Re: interação com objeto
Obrigadaa, consegui fazer tudo certinho dessa vez!!Charlesoff escreveu:Outra coisa, recomendo fazer o script de interação para por nos objetos da cena, e não no Player.
Você pode até criar só um script de problemas matemáticos, onde você possa configurar tudo pelo inspector, e evitar ficar perdendo tempo escrevendo um monte de script.
misakki- Iniciante
- PONTOS : 1206
REPUTAÇÃO : 4
Respeito as regras :
Re: interação com objeto
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using UnityEngine.UI;
public class Damage : MonoBehaviour
{
bool a;
int valorcerto = Unacceptable, unhappy, unattractive;
public GameObject image;
public TMP_InputField inputField;
public GameObject pergunta;
public Button botao;
void Start()
{
var myButton = botao.GetComponent<Button>();
myButton.onClick.AddListener(resposta);
pergunta.SetActive(false);
}
void resposta()
{
if (inputField.text == valorcerto.ToString())
{
Destroy(pergunta);
}
}
void Update()
{
if (a == true)
{
pergunta.SetActive(true);
}
}
void OnTriggerEnter2D(Collider2D collider)
{
if (collider.tag == "Cherries")
{
a = true;
}
}
void OnTriggerExit2D(Collider2D collider)
{
if (collider.tag == "Cherries")
{
a = false;
}
}
}
Charlesoff escreveu:Outra coisa, recomendo fazer o script de interação para por nos objetos da cena, e não no Player.
Você pode até criar só um script de problemas matemáticos, onde você possa configurar tudo pelo inspector, e evitar ficar perdendo tempo escrevendo um monte de script.
misakki- Iniciante
- PONTOS : 1206
REPUTAÇÃO : 4
Respeito as regras :
Re: interação com objeto
O InputField.text é string, você pode mudar a variável 'valorcerto' para string, sem precisar do '.ToString()'
Charlesoff- MembroAvançado
- PONTOS : 1780
REPUTAÇÃO : 40
Áreas de atuação : Game dev
Respeito as regras :
Re: interação com objeto
if (inputField.text == string) Desta maneira?Charlesoff escreveu:O InputField.text é string, você pode mudar a variável 'valorcerto' para string, sem precisar do '.ToString()'
misakki- Iniciante
- PONTOS : 1206
REPUTAÇÃO : 4
Respeito as regras :
Re: interação com objeto
Seria assim:
public string valorcerto = "valor em texto";
Só substituir no lugar da int.
public string valorcerto = "valor em texto";
Só substituir no lugar da int.
Charlesoff- MembroAvançado
- PONTOS : 1780
REPUTAÇÃO : 40
Áreas de atuação : Game dev
Respeito as regras :
Re: interação com objeto
Na verificação:
if (inputField.text == valorcerto){}
if (inputField.text == valorcerto){}
Charlesoff- MembroAvançado
- PONTOS : 1780
REPUTAÇÃO : 40
Áreas de atuação : Game dev
Respeito as regras :
Re: interação com objeto
Ah, okay, muito obrigada, agora realmente TUDO deu certoCharlesoff escreveu:Seria assim:
public string valorcerto = "valor em texto";
Só substituir no lugar da int.
misakki- Iniciante
- PONTOS : 1206
REPUTAÇÃO : 4
Respeito as regras :
Tópicos semelhantes
» Quero setar uma variavel de um objeto para outros objetos , mas o objeto esta dentro de uma array desse objeto
» Interação com elementos UI
» Interação com cenário
» Interação na Cozinha do Unity
» Som ambiente,Interação de objetos unity 3D
» Interação com elementos UI
» Interação com cenário
» Interação na Cozinha do Unity
» Som ambiente,Interação de objetos unity 3D
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos