Como aceder a pontuação correta no outro script
2 participantes
Página 1 de 1
Como aceder a pontuação correta no outro script
Olá, estou com dificuldade em fazer com que o robô quando apanhe os items no final ao bater no objecto ele mude de sprite do objecto consoante a pontuação.
O código é o seguinte:
O código é o seguinte:
- Código:
public class Player{
....
//função que ao colidir com um item adiciona à lista inventário o item
public void OnTriggerEnter2D(Collider2D collision)
{
//Verifica se o item tem tem a mesma tag
if (collision.CompareTag ("Plastic")) {
string itemTypePlastic = collision.gameObject.GetComponent<CollectableScript> ().itemType;//quando colide com o objecto vai adicionar o item na class CollectableScript
//print ("We have collected item " + itemTypePlastic);
//print ("items " + inventory.Count); //conta os items que estão dentro da lista e depois mostra-os na consola
itemsPlasticList.Add (itemTypePlastic); //adiciona à lista
Debug.Log(itemsPlasticList.Count + "contagem de items");
Destroy (collision.gameObject); //destroi o item depois de colidir
//countPlastic++;
textCountItemsPlastic.text = itemsPlasticList.Count.ToString() + "/3";
//PlayerPrefs.SetInt ("countPlastic", countPlastic);
}
if (collision.CompareTag ("Glass")) {
string itemTypeGlass = collision.gameObject.GetComponent<CollectableScript> ().itemType;//quando colide com o objecto vai adicionar o item na class CollectableScript
//print ("We have collected item " + itemTypeGlass);
//print ("items " + inventory.Count); //conta os items que estão dentro da lista e depois mostra-os na consola
itemsGlassList.Add (itemTypeGlass); //adiciona à lista
Destroy (collision.gameObject); //destroi o item depois de colidir
//countGlass++;
textCountItemsGlass.text = itemsGlassList.Count.ToString () + "/3";
//PlayerPrefs.SetInt ("countGlass", countGlass);
}
}
}
- Código:
public class ChangeTrashPlastic : MonoBehaviour {
//Declaração dos objectos publicos
public GameObject portalFinishGameOpen;
public GameObject portalFinishGameClose;
public GameObject trashPlastic;
public Sprite[] trashPlasticArray;
public SpriteRenderer spriteRender;
//Declaração das classes player e PlayerMoviment privadas
private Player player;
private PlayerMoviment playerMoviment;
//Inicia uma unica vez
void Start () {
//procura pelo nome do objecto e usa o script player ou playerMoviment
player = GameObject.Find ("Player").GetComponent<Player> ();
playerMoviment = GameObject.Find ("Player").GetComponent<PlayerMoviment> ();
//countTotalPlastic = count.getCountPlastic;
spriteRender = GetComponent<SpriteRenderer> ();
//abre e fecha a porta do portal
portalFinishGameClose.SetActive(true);
portalFinishGameOpen.SetActive(false);
}
//função que detecta as colisões quando entra e compara a contagem de items abrindo o portal
public void OnTriggerEnter2D(Collider2D colision){
if (player.itemsPlasticList.Count < trashPlasticArray.Length) {
spriteRender.sprite = trashPlasticArray [player.itemsPlasticList.Count];
}
playerMoviment.targetPos = playerMoviment.origPos;
portalFinishGameClose.SetActive (false);
portalFinishGameOpen.SetActive (true);
//spriteRender.sprite = trashPlasticArray [player.totalCountPlastic - 1];
}
}
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
Voce adicionou um Box Collider 2D e ativou o IsTrigger neste objeto que contem o script?
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Como aceder a pontuação correta no outro script
Sim neste caso é o player e no outro é o caixote.Pokedlg escreveu:Voce adicionou um Box Collider 2D e ativou o IsTrigger neste objeto que contem o script?
O problema é que ao colidirem não muda o sprite corretamente
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
Eu neste caso estou a usar o tamanho da lista como contador ou seja a minha ideia era quando apanhes se por exemplo um item ao ir colidir com o objecto final ele ficava com o tamanho qie a lista tivesseXremix30 escreveu:Sim neste caso é o player e no outro é o caixote.Pokedlg escreveu:Voce adicionou um Box Collider 2D e ativou o IsTrigger neste objeto que contem o script?
O problema é que ao colidirem não muda o sprite corretamente
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
E ia mudando de sprite consoante o número da listaXremix30 escreveu:Eu neste caso estou a usar o tamanho da lista como contador ou seja a minha ideia era quando apanhes se por exemplo um item ao ir colidir com o objecto final ele ficava com o tamanho qie a lista tivesseXremix30 escreveu:Sim neste caso é o player e no outro é o caixote.Pokedlg escreveu:Voce adicionou um Box Collider 2D e ativou o IsTrigger neste objeto que contem o script?
O problema é que ao colidirem não muda o sprite corretamente
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
Estive a fazer debug a lista e ela no segundo script da zero.Xremix30 escreveu:E ia mudando de sprite consoante o número da listaXremix30 escreveu:Eu neste caso estou a usar o tamanho da lista como contador ou seja a minha ideia era quando apanhes se por exemplo um item ao ir colidir com o objecto final ele ficava com o tamanho qie a lista tivesseXremix30 escreveu:Sim neste caso é o player e no outro é o caixote.Pokedlg escreveu:Voce adicionou um Box Collider 2D e ativou o IsTrigger neste objeto que contem o script?
O problema é que ao colidirem não muda o sprite corretamente
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
ItemPlasticList é uma lista de strings?
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Como aceder a pontuação correta no outro script
Sim.Pokedlg escreveu:ItemPlasticList é uma lista de strings?
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
a lista no script do player, está funcionando normalmente?
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Como aceder a pontuação correta no outro script
Sim tudo funcionaPokedlg escreveu:a lista no script do player, está funcionando normalmente?
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
Ele nao muda para sprite nenhum, ou ele muda para um incorreto?
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Como aceder a pontuação correta no outro script
Pokedlg escreveu:Ele nao muda para sprite nenhum, ou ele muda para um incorreto este caso com o tamho lista não muda para nenhum porque ela no segundo script fica a zero. Mas se fizer um contador no player é passa lo para o segundo script funciona. Só qie tenho de fazer - 1 no contador para que fique com os sprites corretos.
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
nao estou compreendendo muito bem, mas me corrija se eu estiver errado, voce conseguiu resolver o problema, fazendo um contador, só que tirando -1 para que os sprites fiquem corretos, porém voce quer fazer que fiquem iguais as pontuações e nao quer utilizar o contador nem o -1, é isso?
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Como aceder a pontuação correta no outro script
Minha ideia era usar o tamanho da lista porqie como tenho items diferentes no cenário penso ser a melhor solução. Ao apanhar os items ele guarda os na lista e depois eu queria usar esse tamanho de items como contador dentro do Array sprite. Eu fiz essa condição para que o array de sprites não estoure mas o problema é que quando chamo a lista no segundo script a lista no debug da me tamanho zero ou não posso debugar no segundo script? Daí não muda para o próximo sprite porque não tem contagemPokedlg escreveu:nao estou compreendendo muito bem, mas me corrija se eu estiver errado, voce conseguiu resolver o problema, fazendo um contador, só que tirando -1 para que os sprites fiquem corretos, porém voce quer fazer que fiquem iguais as pontuações e nao quer utilizar o contador nem o -1, é isso?
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
Fiz agora outro teste e ele com. O primeiro script está tudo bem a funcionar apanha o item e conta e põe bem o resultado no texto que aparece no cenário. Mas depois que colide para deixar o lixo ele só faz a primeira posição do Array de sprites.Xremix30 escreveu:Minha ideia era usar o tamanho da lista porqie como tenho items diferentes no cenário penso ser a melhor solução. Ao apanhar os items ele guarda os na lista e depois eu queria usar esse tamanho de items como contador dentro do Array sprite. Eu fiz essa condição para que o array de sprites não estoure mas o problema é que quando chamo a lista no segundo script a lista no debug da me tamanho zero ou não posso debugar no segundo script? Daí não muda para o próximo sprite porque não tem contagemPokedlg escreveu:nao estou compreendendo muito bem, mas me corrija se eu estiver errado, voce conseguiu resolver o problema, fazendo um contador, só que tirando -1 para que os sprites fiquem corretos, porém voce quer fazer que fiquem iguais as pontuações e nao quer utilizar o contador nem o -1, é isso?
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
No segundo script pus simplesmente isto no start Debug. Log(player. ItemList.Count + "Contagem da lista" ) ; e lá dá tamho zeroXremix30 escreveu:Fiz agora outro teste e ele com. O primeiro script está tudo bem a funcionar apanha o item e conta e põe bem o resultado no texto que aparece no cenário. Mas depois que colide para deixar o lixo ele só faz a primeira posição do Array de sprites.Xremix30 escreveu:Minha ideia era usar o tamanho da lista porqie como tenho items diferentes no cenário penso ser a melhor solução. Ao apanhar os items ele guarda os na lista e depois eu queria usar esse tamanho de items como contador dentro do Array sprite. Eu fiz essa condição para que o array de sprites não estoure mas o problema é que quando chamo a lista no segundo script a lista no debug da me tamanho zero ou não posso debugar no segundo script? Daí não muda para o próximo sprite porque não tem contagemPokedlg escreveu:nao estou compreendendo muito bem, mas me corrija se eu estiver errado, voce conseguiu resolver o problema, fazendo um contador, só que tirando -1 para que os sprites fiquem corretos, porém voce quer fazer que fiquem iguais as pontuações e nao quer utilizar o contador nem o -1, é isso?
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
Porque será que ele perde o que tem armazenado?Xremix30 escreveu:No segundo script pus simplesmente isto no start Debug. Log(player. ItemList.Count + "Contagem da lista" ) ; e lá dá tamho zeroXremix30 escreveu:Fiz agora outro teste e ele com. O primeiro script está tudo bem a funcionar apanha o item e conta e põe bem o resultado no texto que aparece no cenário. Mas depois que colide para deixar o lixo ele só faz a primeira posição do Array de sprites.Xremix30 escreveu:Minha ideia era usar o tamanho da lista porqie como tenho items diferentes no cenário penso ser a melhor solução. Ao apanhar os items ele guarda os na lista e depois eu queria usar esse tamanho de items como contador dentro do Array sprite. Eu fiz essa condição para que o array de sprites não estoure mas o problema é que quando chamo a lista no segundo script a lista no debug da me tamanho zero ou não posso debugar no segundo script? Daí não muda para o próximo sprite porque não tem contagemPokedlg escreveu:nao estou compreendendo muito bem, mas me corrija se eu estiver errado, voce conseguiu resolver o problema, fazendo um contador, só que tirando -1 para que os sprites fiquem corretos, porém voce quer fazer que fiquem iguais as pontuações e nao quer utilizar o contador nem o -1, é isso?
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
Qual o tamanho da array trashPlasticArray?
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Como aceder a pontuação correta no outro script
Em que void voce colocou o Debug.Log?
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Como aceder a pontuação correta no outro script
O tamanho é de 0 a 2Pokedlg escreveu:Qual o tamanho da array [size=41]trashPlasticArray?[/size]
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
Em que void voce colocou o Debug.Log?
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Como aceder a pontuação correta no outro script
Coloquei o debug. Log no segundo script no void start()Xremix30 escreveu:O tamanho é de 0 a 2Pokedlg escreveu:Qual o tamanho da array [size=50]trashPlasticArray?[/size]
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
por isso que mostrou 0
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Como aceder a pontuação correta no outro script
tente colocar o debug.log na void OnTriggerEnter, acho que irá funcionar
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Como aceder a pontuação correta no outro script
Funcionou ele tem lá os 3 items. Mas a Sprite não mudaPokedlg escreveu:tente colocar o debug.log na void OnTriggerEnter, acho que irá funcionar
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
Eu acho que sei o que está a contecer. Ele quando colide com o objecto ele põe o total de items na primeira posição do Array fazendo nos mostrar o primeiro Sprite.Xremix30 escreveu:Funcionou ele tem lá os 3 items. Mas a Sprite não mudaPokedlg escreveu:tente colocar o debug.log na void OnTriggerEnter, acho que irá funcionar
Agora não sei como fazer ele iterar para as posições seguintes do Array até atingir o tamanho do trashPlasticArray
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
Afinal acho qe consegui. Fiz um for a percorrer todas as posições do Array e fiz dentro uma condição se o count plástic for igual a i ele mudava de sprite. É parece que funcionou.Xremix30 escreveu:Eu acho que sei o que está a contecer. Ele quando colide com o objecto ele põe o total de items na primeira posição do Array fazendo nos mostrar o primeiro Sprite.Xremix30 escreveu:Funcionou ele tem lá os 3 items. Mas a Sprite não mudaPokedlg escreveu:tente colocar o debug.log na void OnTriggerEnter, acho que irá funcionar
Agora não sei como fazer ele iterar para as posições seguintes do Array até atingir o tamanho do trashPlasticArray
Muito Obrigado Mais uma vez pela Ajuda Pokedlg
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
Eu tinha acabado de fazer o teste com o for kkk, ok
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Como aceder a pontuação correta no outro script
Desculpe me ter antecipado mas afinal ainda não funciona muito bem agora ele muda para a ultima spritePokedlg escreveu:Eu tinha acabado de fazer o teste com o for kkk, ok
Mas ele já deve estar a reconhecer as sprites todas
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Re: Como aceder a pontuação correta no outro script
- Código:
public void OnTriggerEnter2D(Collider2D colision){
if(player.itemPlasticList.Count < trashPlasticArray.Length+1)
{
Debug.Log(player.itemPlasticList.Count);
for(int i = 0; i<player.itemPlasticList; i++)
{
spriteRenderer.sprite = trashPlasticArray[i];
}
}
http://spriteRender.sprite = trashPlasticArray [player.totalCountPlastic - 1];
}
}
Tenta deixar sua void OnTriggerEnter assim, ve se funciona
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Como aceder a pontuação correta no outro script
Funcionou perfeitamente. Muito Obrigado pela sua ajuda PokedlgPokedlg escreveu:
- Código:
public void OnTriggerEnter2D(Collider2D colision){
if(player.itemPlasticList.Count < trashPlasticArray.Length+1)
{
Debug.Log(player.itemPlasticList.Count);
for(int i = 0; i<player.itemPlasticList; i++)
{
spriteRenderer.sprite = trashPlasticArray[i];
}
}
http://spriteRender.sprite = trashPlasticArray [player.totalCountPlastic - 1];
}
}
Tenta deixar sua void OnTriggerEnter assim, ve se funciona
Xremix30- Membro
- PONTOS : 2356
REPUTAÇÃO : 3
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Tópicos semelhantes
» Como aceder ao conteudo de uma lista noutro script unity
» Como acessar variável de um script usando outro script (Entre e entenda).
» COMO DESATIVAR O SCRIPT "FisrtPersonController" DO PLAYER ATRAVÉS DE OUTRO SCRIPT
» Como acesso uma variável em outro script?
» Como faço pra chamar a funçao de um script em outro ?
» Como acessar variável de um script usando outro script (Entre e entenda).
» COMO DESATIVAR O SCRIPT "FisrtPersonController" DO PLAYER ATRAVÉS DE OUTRO SCRIPT
» Como acesso uma variável em outro script?
» Como faço pra chamar a funçao de um script em outro ?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos