Mudar o SetActive ao clicar em um GameObject.
2 participantes
Página 1 de 1
Mudar o SetActive ao clicar em um GameObject.
Estou usando Unity e Vuforia.
Esse aplicativo abre a câmera e projeta o personagem em uma folha.
Estou fazendo um aplicativo de realidade aumentada pra aprender e quero poder clicar no target na tela do celular e mudar o 3D que aparece.
Este script resolve mas ele funciona quando eu aperto espaço. Tentei todas as opções q achei na biblioteca mas nada funcionou. Preciso que seja quando eu clico na tela e no target.
Preciso que eu possa usar o script direto no objeto pois são alguns targets.
Obrigado.
Esse aplicativo abre a câmera e projeta o personagem em uma folha.
Estou fazendo um aplicativo de realidade aumentada pra aprender e quero poder clicar no target na tela do celular e mudar o 3D que aparece.
Este script resolve mas ele funciona quando eu aperto espaço. Tentei todas as opções q achei na biblioteca mas nada funcionou. Preciso que seja quando eu clico na tela e no target.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class muda : MonoBehaviour {
public GameObject obj1;
public GameObject obj2;
bool ativ = false;
void Update (){
if (Input.GetKey (KeyCode.Space)){
ativ = !ativ;
}
if (ativ) {
obj1.SetActive (true);
obj2.SetActive (false);
} else {
obj1.SetActive (false);
obj2.SetActive (true);
}
}
}
Preciso que eu possa usar o script direto no objeto pois são alguns targets.
Obrigado.
raulframos- Iniciante
- PONTOS : 2632
REPUTAÇÃO : 0
Respeito as regras :
Re: Mudar o SetActive ao clicar em um GameObject.
._. Dependendo do jogo você pode fazer um botão,para funcionar é só remover esse if (Input.GetKey (KeyCode.Space)){},transformar a void update em qualquer outra e depois chamar ela em algum botão...
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class muda : MonoBehaviour {
public GameObject obj1;
public GameObject obj2;
bool ativ = false;
public void Ativar (){
ativ = !ativ;
if (ativ) {
obj1.SetActive (true);
obj2.SetActive (false);
} else {
obj1.SetActive (false);
obj2.SetActive (true);
}
}
}
Re: Mudar o SetActive ao clicar em um GameObject.
Infelizmente não deu certo.PauloFR escreveu:._. Dependendo do jogo você pode fazer um botão,para funcionar é só remover esse if (Input.GetKey (KeyCode.Space)){},transformar a void update em qualquer outra e depois chamar ela em algum botão...
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class muda : MonoBehaviour {
public GameObject obj1;
public GameObject obj2;
bool ativ = false;
public void Ativar (){
ativ = !ativ;
if (ativ) {
obj1.SetActive (true);
obj2.SetActive (false);
} else {
obj1.SetActive (false);
obj2.SetActive (true);
}
}
}
Botões só consigo adicionar no Canvas. Tentei adicionar o componente Button no GameObject e no target, vincular esse script ao objeto e apontar para ele mesmo mas não deu certo.
Tentei usar o tal do Virtual Button do Vuforia mas nao entendi como funciona. Vi alguns videos de como imprementa mas nao da certo aqui. Estou usando o unity 5.5.1.
raulframos- Iniciante
- PONTOS : 2632
REPUTAÇÃO : 0
Respeito as regras :
Re: Mudar o SetActive ao clicar em um GameObject.
Hm, só lembro esse modo msm... ;-;raulframos escreveu:Infelizmente não deu certo.
Botões só consigo adicionar no Canvas. Tentei adicionar o componente Button no GameObject e no target, vincular esse script ao objeto e apontar para ele mesmo mas não deu certo.
Tentei usar o tal do Virtual Button do Vuforia mas nao entendi como funciona. Vi alguns videos de como implementar mas não da certo aqui. Estou usando o unity 5.5.1.
Re: Mudar o SetActive ao clicar em um GameObject.
Consegui da seguinte forma...
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class TrocaTresDClique : MonoBehaviour {
public GameObject obj1;
public GameObject obj2;
bool ativ = false;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
//Select Stage
if (hit.transform.name == "target")//Aqui vc precisa colocar o nome do Target
ativ = !ativ;
}
if (ativ) {
obj1.SetActive (true);
obj2.SetActive (false);
} else {
obj1.SetActive (false);
obj2.SetActive (true);
}
}
}
}
raulframos- Iniciante
- PONTOS : 2632
REPUTAÇÃO : 0
Respeito as regras :
Re: Mudar o SetActive ao clicar em um GameObject.
Alguém pode me ajudar? Eu preciso ter mais do que 2 objetos.raulframos escreveu:Consegui da seguinte forma...
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class TrocaTresDClique : MonoBehaviour {
public GameObject obj1;
public GameObject obj2;
bool ativ = false;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
//Select Stage
if (hit.transform.name == "target")//Aqui vc precisa colocar o nome do Target
ativ = !ativ;
}
if (ativ) {
obj1.SetActive (true);
obj2.SetActive (false);
} else {
obj1.SetActive (false);
obj2.SetActive (true);
}
}
}
}
Neste caso consigo somente com 2 objetos onde ele só consegue ver se aquela variável esta ativa ou não.
Como eu faria para ter mais do que isso?
Exemplo:
Quando eu clico no objeto eu deixo o 1 objeto ativo e outros dois desativados.Na segunda clicada eu desativo o primeiro, ativo o segundo e continuo com o 3 desativado. Na terceira desativo os 2 primeiros e ativo só o terceiro e em um quarto clique eu volto a ativar somente o primeiro.
Alguém sabe como eu faria isso?
Obrigado.
raulframos- Iniciante
- PONTOS : 2632
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» Destacar gameobject ao clicar
» Problema com SetActive
» mudar objeto ao clicar nele
» Dúvida Sobre SetActive
» Como mudar gameobject instanciado na function start?
» Problema com SetActive
» mudar objeto ao clicar nele
» Dúvida Sobre SetActive
» Como mudar gameobject instanciado na function start?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos