Como desligar e ligar emission por um script em outro objeto.
4 participantes
Página 1 de 1
Como desligar e ligar emission por um script em outro objeto.
Galera, eu fiz um script de interruptor pra ligar um spot light, mas fica estranho a lampada por causa do emission do material da lampada sempre ligado ou desligado, como que faço pra tipo, quando a luz estiver ligada o emission estar ligado também, e quando desligada ele desligar, eu sei que é facil isso, mas o problema é encontrar o emission no script, coisa que eu não consigo, eu tenho dificuldades com GetComponent e GetComponentInChildren então né, eu ia fazer do mesmo jeito que fiz com a luz, colocando public Light luz; e la no inspector por a tal luz, mas com o gameobject não estou conseguindo :c
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Interruptor : MonoBehaviour {
public Light Luz;
private bool estado = false;
private bool colidindo = false;
private string tagjogador = "Player";
private AudioSource som;
void Start () {
som = this.GetComponent<AudioSource>();
Luz.enabled = false;
transform.localRotation = Quaternion.Euler (0, 4, 0);
}
void Update () {
if (colidindo && Input.GetKeyDown("e")){
estado = !estado;
AcenderApagar (estado);
}
}
void AcenderApagar (bool ligdes) {
if (!som != null && !som.isPlaying){
som.Play();
}
if (ligdes) {
Luz.enabled = true;
transform.localRotation = Quaternion.Euler (0, -4, 0);
}
else {
Luz.enabled = false;
transform.localRotation = Quaternion.Euler (0, 4, 0);
}
}
void OnTriggerEnter (Collider colisão) {
if (colisão.gameObject.tag == tagjogador) {
colidindo = true;
}
}
void OnTriggerExit (Collider colisão) {
if (colisão.gameObject.tag == tagjogador)
colidindo = false;
}
}
Vinicius F.- Membro
- PONTOS : 2819
REPUTAÇÃO : 2
Respeito as regras :
Re: Como desligar e ligar emission por um script em outro objeto.
Pera.. Se eu entendi bem, voce quer pegar o componente emission da lampada? Se for isso é só usar o GetComponent<Light>().nomeDoComponente... Se não for isso, voce pode explicar um pouco melhor?
Re: Como desligar e ligar emission por um script em outro objeto.
Exato, por que quando o quarto esta escuro e o emission esta ligado, a lampada, o modelo, fica claro, parecendo que ela esta ligada, mas a luz não esta, entende ? o que eu estava tentando fazer era tipo, luz ligada por meio desse script no interruptor, emission ligado, desliga a luz, e o emission desliga junto, tipo pra fikr mais realista.marcos4503 escreveu:Pera.. Se eu entendi bem, voce quer pegar o componente emission da lampada? Se for isso é só usar o GetComponent<Light>().nomeDoComponente... Se não for isso, voce pode explicar um pouco melhor?
E sim, seria só usar o GetComponent, mas eu não estou conseguindo, não sei se é por erro meu mesmo ou sei la, ja vi e revi a aula do marcos, mas mesmo assim não consigo.
Vinicius F.- Membro
- PONTOS : 2819
REPUTAÇÃO : 2
Respeito as regras :
Re: Como desligar e ligar emission por um script em outro objeto.
Eu tava procurando por um componente "Emission" nas minhas lampadas.. Não achei... Onde fica isso?
Re: Como desligar e ligar emission por um script em outro objeto.
- Código:
public Color cor;
public GameObject esferaVerde;
void update(){
esferaVerde.GetComponent<Renderer>().material.SetColor("_EmissionColor",cor = Color.black);
}
Voce coloca o game objt na variavel como eu fiz e dara certo;
Tive que pesquisar bastante pelo menos aqui deu certo.
Boa Sorte.
Zecandy- Mestre
- PONTOS : 3505
REPUTAÇÃO : 155
Idade : 42
Respeito as regras :
Re: Como desligar e ligar emission por um script em outro objeto.
Ahhh, tem q colocar no <> Renderer, por isso, vlw pae <3Zecandy escreveu:Isso é um exemplo
- Código:
public Color cor;
public GameObject esferaVerde;
void update(){
esferaVerde.GetComponent<Renderer>().material.SetColor("_EmissionColor",cor = Color.black);
}
Voce coloca o game objt na variavel como eu fiz e dara certo;
Tive que pesquisar bastante pelo menos aqui deu certo.
Boa Sorte.
Vinicius F.- Membro
- PONTOS : 2819
REPUTAÇÃO : 2
Respeito as regras :
Re: Como desligar e ligar emission por um script em outro objeto.
é no material das lampadas tlgdmarcos4503 escreveu:Eu tava procurando por um componente "Emission" nas minhas lampadas.. Não achei... Onde fica isso?
Vinicius F.- Membro
- PONTOS : 2819
REPUTAÇÃO : 2
Respeito as regras :
Re: Como desligar e ligar emission por um script em outro objeto.
Eu nunca tinha notado esse elemento.. Vou procurar isso na unity assim que eu voltar da escola
Edit: aaaah! se tratava do emission do material!! Agora eu entendi! Isso é simples mano! vou preparar um script de exemplo pra você, e já posto aqui!
Edit: aaaah! se tratava do emission do material!! Agora eu entendi! Isso é simples mano! vou preparar um script de exemplo pra você, e já posto aqui!
Re: Como desligar e ligar emission por um script em outro objeto.
Aqui mano! Tudo que você tem que fazer, é jogar o script dentro de algum cubo, só pra você ver o exemplo em ação e poder estudar o script!
Aqui vai
(O script apenas fica mudando a cor de 1 em 1 segundo, só como exemplo)
Espero ter ajudado!
Aqui vai
(O script apenas fica mudando a cor de 1 em 1 segundo, só como exemplo)
- Código:
public class teste : MonoBehaviour
{
public Color Cor1;
public Color Cor2;
private Color CorAtual;
public float TempoMudar;
public Renderer LuzMaterial; //Aqui voce deve pegar o componente "Mesh renderer" no inspector e arrastar para essa variavel
private Material mat; //Ao iniciar o script, ele ira coletar o material do mesmo, e guarda-lo aqui dentro automaticamente
// Use this for initialization
void Start ()
{
CorAtual = Cor1;
mat = LuzMaterial.material; //Aqui é a parte que ele guarda.
}
// Update is called once per frame
void Update ()
{
mat.SetColor ("_EmissionColor", CorAtual); //Esse é o comando que você deve usar para setar a cor. "_EmissionColor" é o metodo que você vai usar para pegar o componente emission
TempoMudar += Time.deltaTime; //Dessa linha para baixo, é apenas a logica que eu montei que ira ficar mudando a cor do material.
if (TempoMudar >= 1 && CorAtual == Cor1) {
CorAtual = Cor2;
TempoMudar = 0;
}
if (TempoMudar >= 1 && CorAtual == Cor2) {
CorAtual = Cor1;
TempoMudar = 0;
}
}
}
Espero ter ajudado!
Tópicos semelhantes
» Como faço pra desligar e ligar outro text?
» Script de desligar e ligar varios componentes de uma vez UTILIZANDO A TAG.
» RESOLVIDO Script de ligar/desligar lanterna Unity 5 Ultima Versao
» como fazer uma ação ao ligar ou desligar o toggle
» Como acessar uma variável de outro script sem saber o objeto?
» Script de desligar e ligar varios componentes de uma vez UTILIZANDO A TAG.
» RESOLVIDO Script de ligar/desligar lanterna Unity 5 Ultima Versao
» como fazer uma ação ao ligar ou desligar o toggle
» Como acessar uma variável de outro script sem saber o objeto?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos