Objetos não respeitam script
3 participantes
Página 1 de 1
Objetos não respeitam script
Olá pessoal. Sou extremamente iniciante tanto com Unity quanto com programação.
Esse é meu primeiro post aqui e já venho com dúvidas, haha.
Basicamente tenho um emissor de "laser". É um objeto que emite um LineRenderer e essa linha pode ser refletida em determinados objetos do tipo "mirror".
Além disso, quando o laser toca em um cristal ele emite luz. Também existe um prisma que, se o laser bater, ele emite outras 4 luzes (prefabs do laser).
O problema é que apenas o laser original acende a luz do cristal, os lasers que saem do prisma não estão acendendo o cristal e, mesmo se eu fizer uma cópia da luz original, o cristal continua não acendendo. Ou seja, qualquer prefab do laser que não for o original não acende o cristal.
Outro problema que também ocorre é que, se eu tiver mais de um prisma, eles não funcionam direito. Às vezes só um funciona, outras vezes nenhum funciona.
Já olhei mil lugares e, pelo que percebi, pode ter algo a ver com o fato de eu estar usando Static, porém não sei como resolver isso para o meu contexto.
Abaixo deixarei meus scripts para que possam conferir.
Cristal
Prisma
Laser
Esse é meu primeiro post aqui e já venho com dúvidas, haha.
Basicamente tenho um emissor de "laser". É um objeto que emite um LineRenderer e essa linha pode ser refletida em determinados objetos do tipo "mirror".
Além disso, quando o laser toca em um cristal ele emite luz. Também existe um prisma que, se o laser bater, ele emite outras 4 luzes (prefabs do laser).
O problema é que apenas o laser original acende a luz do cristal, os lasers que saem do prisma não estão acendendo o cristal e, mesmo se eu fizer uma cópia da luz original, o cristal continua não acendendo. Ou seja, qualquer prefab do laser que não for o original não acende o cristal.
Outro problema que também ocorre é que, se eu tiver mais de um prisma, eles não funcionam direito. Às vezes só um funciona, outras vezes nenhum funciona.
Já olhei mil lugares e, pelo que percebi, pode ter algo a ver com o fato de eu estar usando Static, porém não sei como resolver isso para o meu contexto.
Abaixo deixarei meus scripts para que possam conferir.
Cristal
- Código:
public static Light2D crystalLight;
void Start()
{
crystalLight = GetComponent<Light2D>();
}
void Update()
{
crystalLight.enabled = false;
}
Prisma
- Código:
public static LineRenderer[] lightLines;
void Start()
{
lightLines = GetComponentsInChildren<LineRenderer>();
}
void Update()
{
DisableLightBeams();
}
void DisableLightBeams()
{
foreach (LineRenderer col in lightLines)
{
col.enabled = false;
}
}
public static void EnableLightBeams()
{
foreach (LineRenderer col in lightLines)
{
col.enabled = true;
}
}
Laser
- Código:
public int reflections;
public float maxLength;
private LineRenderer lineRenderer;
private Ray ray;
private RaycastHit hit;
private Vector3 direction;
private void Start()
{
lineRenderer = GetComponent<LineRenderer>();
}
private void Update()
{
ray = new Ray(transform.position, transform.right);
lineRenderer.positionCount = 1;
lineRenderer.SetPosition(0, transform.position);
float remainingLength = maxLength;
for (int i = 0; i < reflections; i++)
{
if(Physics.Raycast(ray.origin, ray.direction, out hit, remainingLength))
{
lineRenderer.positionCount += 1;
lineRenderer.SetPosition(lineRenderer.positionCount - 1, hit.point);
remainingLength -= Vector3.Distance(ray.origin, hit.point);
ray = new Ray(hit.point, Vector3.Reflect(ray.direction, hit.normal));
if(hit.collider.tag =="crystal")
{
floorCrystal.crystalLight.enabled = true;
}
if(hit.collider.tag =="prism")
{
prism.EnableLightBeams();
}
if (hit.collider.tag !="mirror")
break;
}
else
{
lineRenderer.positionCount += 1;
lineRenderer.SetPosition(lineRenderer.positionCount - 1, ray.origin + ray.direction * remainingLength);
}
}
}
wesmachado- Iniciante
- PONTOS : 1431
REPUTAÇÃO : 0
Respeito as regras :
Re: Objetos não respeitam script
Ps. Só consegui montar esses objetos seguindo tutoriais então tô bem perdido.
wesmachado- Iniciante
- PONTOS : 1431
REPUTAÇÃO : 0
Respeito as regras :
Re: Objetos não respeitam script
Poderia enviar alguns prints ou videos?
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: Objetos não respeitam script
Funcionando normalmente.
Com prisma. Já é possível observar que a luz do cristal não acende.
Um dos bugs do prisma. Ele emitindo lasers sem estar recebendo um laser.
Com prisma. Já é possível observar que a luz do cristal não acende.
Um dos bugs do prisma. Ele emitindo lasers sem estar recebendo um laser.
wesmachado- Iniciante
- PONTOS : 1431
REPUTAÇÃO : 0
Respeito as regras :
Re: Objetos não respeitam script
ainda tô preso nisso =[
wesmachado- Iniciante
- PONTOS : 1431
REPUTAÇÃO : 0
Respeito as regras :
Re: Objetos não respeitam script
No update do prisma, tu tem esse comando:
Mas isso não vai deixar o colisor sempre em off?
- Código:
DisableLightBeams();
Mas isso não vai deixar o colisor sempre em off?
Tópicos semelhantes
» Alguem tem um Script que faz objetos se mexer com delay?
» Script De Seleção de Objetos
» Script para possuir objetos
» Dúvida sobre o script de Mover Objetos
» Script de ataque para vários Objetos
» Script De Seleção de Objetos
» Script para possuir objetos
» Dúvida sobre o script de Mover Objetos
» Script de ataque para vários Objetos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos