AJUDA COM SCRIPT E TRIGGERS
5 participantes
Página 1 de 1
AJUDA COM SCRIPT E TRIGGERS
Opa e aí pessoal, tudo bem com vocês? Então to com um probleminha com um script, na verdade não sei se é no script msm. Seguinte, em um topico anterior eu comentei que meu jogo tava tendo uns lags pq tava ficando muito pesado e tals, a partir daí resolvi criar um script que pudesse diminuir o lag.
O jogo se passa numa casa comum que, claro tem seus cômodos, e elaborei o script pensando da seguinte forma, Ex: tem a cozinha e o quarto, se estou na cozinha não tem precisão dos objetos do quarto continuarem lá, e visse e versa, certo? eles so seriam carregados quando eu saísse de determinada aréa e fosse em direção a eles (os objetos).
Em prática, elaborei o seguinte script usando triggers, pois eles que irão especificar cada aréa e tal.
Na casa, no jogo, tem um quarto trancado, inacessível (em determinados momentos do jogo), então tbm não tem necessidade dos objetos la dentro desse quarto serem carregados enquanto estou fora dele, o script diz que se eu estou dentro do trigger determinado objeto (esse quarto) é desativado e quando eu saio desse trigger o mesmo é ativado novamente, simples. Mas é aí que vem o erro, na verdade o script ate funciona mas so que ocorre um erro ja em cena. São varios triggers pq a casa é grande, então o script ta como se tivesse entendendo errado kkkk, pq ex: eu to no trigger da cozinha; quarto sem objetos. estou na sala (é de lado da cozinha); quarto sem objetos tbm, mas quando o player ta passando do trigger da cozinha pra sala meio que buga =( e, ao invés de continuar desativado, pois os dois triggers, através do script, determinam a msm coisa, não acontece isso, os objetos daquele quarto, eles ativam, msm eu ja estando dentro do trigger da sala que tbm determina que os objetos do quarto sejam desativados '-'
Não sei se deu pra entender oq eu to querendo dizer exatamente, ate escrevi de mais kkjjkjkjkk mas se alguem tiver entendido e souber resolver isso comenta ae vllwwww..
O jogo se passa numa casa comum que, claro tem seus cômodos, e elaborei o script pensando da seguinte forma, Ex: tem a cozinha e o quarto, se estou na cozinha não tem precisão dos objetos do quarto continuarem lá, e visse e versa, certo? eles so seriam carregados quando eu saísse de determinada aréa e fosse em direção a eles (os objetos).
Em prática, elaborei o seguinte script usando triggers, pois eles que irão especificar cada aréa e tal.
- Código:
using UnityEngine;
using System.Collections;
public class OTIMIZAÇÃO : MonoBehaviour
{
public GameObject[] objetos;
void Start()
{
foreach (GameObject objeto in objetos)
{
objeto.SetActive(true);
}
}
void OnTriggerEnter()
{
foreach (GameObject objeto in objetos)
{
objeto.SetActive(false);
}
}
void OnTriggerExit()
{
foreach (GameObject objeto in objetos)
{
objeto.SetActive(true);
}
}
}
Na casa, no jogo, tem um quarto trancado, inacessível (em determinados momentos do jogo), então tbm não tem necessidade dos objetos la dentro desse quarto serem carregados enquanto estou fora dele, o script diz que se eu estou dentro do trigger determinado objeto (esse quarto) é desativado e quando eu saio desse trigger o mesmo é ativado novamente, simples. Mas é aí que vem o erro, na verdade o script ate funciona mas so que ocorre um erro ja em cena. São varios triggers pq a casa é grande, então o script ta como se tivesse entendendo errado kkkk, pq ex: eu to no trigger da cozinha; quarto sem objetos. estou na sala (é de lado da cozinha); quarto sem objetos tbm, mas quando o player ta passando do trigger da cozinha pra sala meio que buga =( e, ao invés de continuar desativado, pois os dois triggers, através do script, determinam a msm coisa, não acontece isso, os objetos daquele quarto, eles ativam, msm eu ja estando dentro do trigger da sala que tbm determina que os objetos do quarto sejam desativados '-'
Não sei se deu pra entender oq eu to querendo dizer exatamente, ate escrevi de mais kkjjkjkjkk mas se alguem tiver entendido e souber resolver isso comenta ae vllwwww..
MeverPlays- Mestre
- PONTOS : 3871
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Bom Não entendi lá essas coisa mais deu para entender '-'
organize por tag
todo os objetos da sala cozinha e etc estão em uma só variável ?
organize por tag
- Código:
public GameObject[] objetos;
todo os objetos da sala cozinha e etc estão em uma só variável ?
Weslley- Moderador
- PONTOS : 5730
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
kkkkkkk sim os objetos da sala TV, Sofá e etc estão todos organizados em um Empty. SALA (todos os objetos da sala nesse empty) QUARTO (todos os objetos do quarto nesse empty) e por aí vai.
MeverPlays- Mestre
- PONTOS : 3871
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Vou tentar explicar melhor kkk. 2 Triggers, que estão com esse script, um colado com o outro determinam que os objetos de um quarto serão desativados, certo? ate aí blz, o erro é que quando estou passando de um trigger para outro os objetos do quarto deveriam ser desativados pois os dois trigger determinam a msm coisa!! mas enquanto saio de um e vou pro outro, msm eu estando dentro do outro os objetos do quarto ativam
MeverPlays- Mestre
- PONTOS : 3871
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
ok vc tem que criar um método para identifica em que cômodo vc esta
vc poder fazer algo com enum
vc poder fazer algo com enum
Weslley- Moderador
- PONTOS : 5730
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Sinceramente, é um script bem elaborado mas acho que não é o ideal, acho que o weslley fez um script bem similar em relação a produtividade, ele funciona, e é extremamente fuckin simples e eficaz, pode confiar e uso e aumentou tipo 10-25 fps, óbvio que meu cenário era tipo muito grande então tinha vários objetos, o único problema é que quando faço no sketchUp, ele cria algumas instancias com uns objetos a mais, e adicionar um por um é tipo https://www.schultzgames.com/t82-tutorial-otimizacao-simples-por-distancia?highlight=Otimiza%C3%A7%C3%A3o+por+dist%C3%A2nciaMeverPlays escreveu:Vou tentar explicar melhor kkk. 2 Triggers, que estão com esse script, um colado com o outro determinam que os objetos de um quarto serão desativados, certo? ate aí blz, o erro é que quando estou passando de um trigger para outro os objetos do quarto deveriam ser desativados pois os dois trigger determinam a msm coisa!! mas enquanto saio de um e vou pro outro, msm eu estando dentro do outro os objetos do quarto ativam
ScorpionG4mer- Avançado
- PONTOS : 3449
REPUTAÇÃO : 45
Áreas de atuação : Inciante no C#, Arruaceiro no Blender
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Mas não sei fazer scripts desse tipo weslleyfx.
Eu ja tinha visto este metodo de otimização ScorpionG4mer mas ainda não usei, sei q não vai ser útil pq a casa é pequena.
Eu ja tinha visto este metodo de otimização ScorpionG4mer mas ainda não usei, sei q não vai ser útil pq a casa é pequena.
MeverPlays- Mestre
- PONTOS : 3871
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Essa de identificar os cômodos é muito fácil MeverPlays. Cria um trigger em cada cômodo e põe uma booleana exemplo.
Aí pra interagir vc pode usar um if dizendo se estaNaCozinha ficar true acontece uma ação que vc queira. Caso queira interagir por outro script a variável estaNaCozinha tem que ser static
- Código:
public bool estaNaCozinha;
void Start (){
estaNaCozinha = false;
}
void OnTriggerEnter () {
estaNaCozinha = true;
}
void OnTriggerExit () {
estaNaCozinha = false;
}
Aí pra interagir vc pode usar um if dizendo se estaNaCozinha ficar true acontece uma ação que vc queira. Caso queira interagir por outro script a variável estaNaCozinha tem que ser static
JohnRambo- Moderador
- PONTOS : 5175
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Hmm e como faço pra deixar ela static? kk sou muito noob em fazer scripts. mas acho que nem precisa so vou adicionar isso ao script que postei logo acima, mas como não é so a cozinha que vai desativar os objetos da sala eu precisaria fazer isso aqui por exemplo?:
Ou eu teria que fazer varios scripts diferentes?
- Código:
public bool estaNaCozinha;
void Start (){
estaNaCozinha = false;
estaNaSala = true
}
void OnTriggerEnter () {
estaNaCozinha = true;
estaNaSala = true
}
void OnTriggerExit () {
estaNaCozinha = false;
estaNaSala = true
}
Ou eu teria que fazer varios scripts diferentes?
MeverPlays- Mestre
- PONTOS : 3871
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
no caso seria um trigger pra cada comodo. eu recomendo que cada trigger tenha um script.
Exemplos:
Script do banheiro
script da sala:
crie um trigger pra cada comodo e jogue os scripts nos seus devidos triggers correspondentes aos comodos :D :bom:
Exemplos:
Script do banheiro
- Código:
using UnityEngine;
using System.Collections;
public class Banheiro : MonoBehaviour {
public static bool estaNoBanheiro;
void Start () {
estaNoBanheiro = false;
}
void Update () {
}
void OnTriggerEnter () {
estaNoBanheiro = true;
}
void OnTriggerExit () {
estaNoBanheiro = false;
}
}
script da sala:
- Código:
using UnityEngine;
using System.Collections;
public class Sala : MonoBehaviour {
public static bool estaNaSala;
void Start () {
estaNaSala = false;
}
void Update () {
}
void OnTriggerEnter () {
estaNaSala = true;
}
void OnTriggerExit () {
estaNaSala = false;
}
}
crie um trigger pra cada comodo e jogue os scripts nos seus devidos triggers correspondentes aos comodos :D :bom:
JohnRambo- Moderador
- PONTOS : 5175
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Humm ja tenho os triggers tudo certo, mas no caso eu tenho que criar uma tag no empty dos objetos da Sala, Cozinha e etc?
ex: os objetos que quero desativar estão em um empty, nesse empty que devo adicionar a tag?
ex: os objetos que quero desativar estão em um empty, nesse empty que devo adicionar a tag?
MeverPlays- Mestre
- PONTOS : 3871
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Ou terei que criar o trigger no proprio empty, tendo que excluir todos os outros que antes eram so cubos sem meshs?
MeverPlays- Mestre
- PONTOS : 3871
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
bom se eu tiver entendido, vamos tentar assim:
Crie um objeto vazio e jogue todos os objetos da sala dentro dele, e jogue esse objeto vazio na variavel objetosDaSala
- Código:
using UnityEngine;
using System.Collections;
public class Sala : MonoBehaviour {
public static bool estaNaSala;
public GameObject objetosDaSala;
void Start () {
estaNaSala = false;
objetosDaSala.SetActive (false);
}
void Update () {
}
void OnTriggerEnter () {
estaNaSala = true;
objetosDaSala.SetActive (true);
}
void OnTriggerExit () {
estaNaSala = false;
objetosDaSala.SetActive (false);
}
}
Crie um objeto vazio e jogue todos os objetos da sala dentro dele, e jogue esse objeto vazio na variavel objetosDaSala
JohnRambo- Moderador
- PONTOS : 5175
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Hmm acho que agr sim vai funcionar. msm eu tendo que criar varios scripts kkk vllw John Rambo =)
MeverPlays- Mestre
- PONTOS : 3871
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Sem problema MeverPlays, precisando tamo aki :D :D :D
se nao der pra jogar os objetos num so e jogar na variavel vc pode criar um array e jogar os objetos nele
se nao der pra jogar os objetos num so e jogar na variavel vc pode criar um array e jogar os objetos nele
JohnRambo- Moderador
- PONTOS : 5175
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Eu recomendo por questão de organização, criar uma pasta, na pasta que você guarda seus scripts, chamada Cenário,casa, qualquer coisa rsrs, pra não bagunçar :DMeverPlays escreveu:Hmm acho que agr sim vai funcionar. msm eu tendo que criar varios scripts kkk vllw John Rambo =)
ScorpionG4mer- Avançado
- PONTOS : 3449
REPUTAÇÃO : 45
Áreas de atuação : Inciante no C#, Arruaceiro no Blender
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
É só diminuir a distáncia máxima para sumirMeverPlays escreveu:Mas não sei fazer scripts desse tipo weslleyfx.
Eu ja tinha visto este metodo de otimização ScorpionG4mer mas ainda não usei, sei q não vai ser útil pq a casa é pequena.
ScorpionG4mer- Avançado
- PONTOS : 3449
REPUTAÇÃO : 45
Áreas de atuação : Inciante no C#, Arruaceiro no Blender
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
É vou fazer isso =)Eu recomendo por questão de organização, criar uma pasta, na pasta que você guarda seus scripts, chamada Cenário,casa, qualquer coisa rsrs, pra não bagunçar :D
MeverPlays- Mestre
- PONTOS : 3871
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Eu tava tentando editar esse script hj pra usar um foreach pra poder eu selecionar o numero de objetos que vão poder ser colocados, mas não consegui de jeito nenhum, sabe como fazer?
MeverPlays- Mestre
- PONTOS : 3871
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Pior que nem funcionou esse script que vc passou John Rambo, acabei de testar ele agr. ta dando aquele msm erro, msm eu estando dentro do outro collider, que tbm determina que determinados objetos sejam desativados, eles não desativam. aparece esse erro: "Destroying GameObjects immediately is not permitted during physics trigger/contact, animation event callbacks or OnValidate. You must use Destroy instead.
UnityEngine.GameObject:SetActive(Boolean)"
UnityEngine.GameObject:SetActive(Boolean)"
MeverPlays- Mestre
- PONTOS : 3871
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Ja vi esse seu video Marcos, porém não é o ideal para oq eu to querendo, o ideal msm seria a ideia que falei logo acima, pois o quarto que fica trancado durante uma boa parte do jogo, a parede dele é a msm da sala então a distancia configurada nesse script do video teria que ser muuuito pequena, e também os objetos da casa sumiriam de repente na cara do player. bom mesmo seria algo que so carregasse os objetos quando o player estivesse olhando pra eles, se possivel 1 segundo antes pra não dar aquela impresão de load demorado, mas acho que não tem como fazer isso no unity.
MeverPlays- Mestre
- PONTOS : 3871
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Tem esta versão simples para triggers:
- Código:
using System;
using UnityEngine;
using System.Collections;
[Serializable]
public class Objeto{
public GameObject triggerAtivar,triggerDesativar;
[Space(10)]
public GameObject[] objetos;
}
public class Otimizacao : MonoBehaviour {
public Objeto[] objetos;
void OnTriggerEnter (Collider colisor){
for (int x = 0; x < objetos.Length; x++) {
if (colisor.gameObject == objetos [x].triggerAtivar) {
for (int y = 0; y < objetos [x].objetos.Length; y++) {
objetos [x].objetos [y].SetActive (true);
}
} else if (colisor.gameObject == objetos [x].triggerDesativar) {
for (int y = 0; y < objetos [x].objetos.Length; y++) {
objetos [x].objetos [y].SetActive (false);
}
}
}
}
}
Re: AJUDA COM SCRIPT E TRIGGERS
Aeeeh será que agr funciona man? tomara que sim, vc é o cara! =)
MeverPlays- Mestre
- PONTOS : 3871
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Puts vi agr, esse script tem muitos erros na unity não pode nem dar play :/
MeverPlays- Mestre
- PONTOS : 3871
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Na verdade do teve erros pq fui inventar de modificar, mas agr deixei do jeito que tava. so que não fez nada. como eu quero que ao entrar no trigger desative e ao sair ative, em Trigger Ativar e Trigger desativar coloquei os msm triggers. e em objetos coloquei os que iriam desativar.
MeverPlays- Mestre
- PONTOS : 3871
REPUTAÇÃO : 48
Áreas de atuação : SketchUp, Unity.
Respeito as regras :
Re: AJUDA COM SCRIPT E TRIGGERS
Então use apenas este script nos triggers:
- Código:
using UnityEngine;
using System.Collections;
public class Otimizacao : MonoBehaviour {
public GameObject[] objetos;
void OnTriggerEnter (){
for (int y = 0; y < objetos.Length; y++) {
objetos [y].SetActive (true);
}
}
void OnTriggerExit (){
for (int y = 0; y < objetos.Length; y++) {
objetos [y].SetActive (false);
}
}
}
Tópicos semelhantes
» Ajuda Urgente como chamo a animação no script alguém poderia dar uma ajuda???
» [AJUDA]Preciso de ajuda em um script relacionado ao vídeo Sistema de escolha de personagen
» [AJUDA]Quero Ajuda poque esse script so da erro!
» Ajuda com script
» Ajuda Em Script
» [AJUDA]Preciso de ajuda em um script relacionado ao vídeo Sistema de escolha de personagen
» [AJUDA]Quero Ajuda poque esse script so da erro!
» Ajuda com script
» Ajuda Em Script
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos