[TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
+6
Eduardoro39
osiasbezerra
exgame2016
Yuri Heinz
liloc32
MarcosSchultz
10 participantes
Página 1 de 1
[TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Fala galera, neste tutorial estou trazendo um metodo bastante simples para fazer um laser na Unity 5...
Vídeo explicando como fazer:
Script utilizado no vídeo:
Básicamente basta jogar o script no objeto que representa o Laser e já irá funcionar 100% :D
OBS: Não se esqueçam de ir em Edit > Project Settings > Graphics e adicionar o shader "Particles/Additive" na lista always, para evitar erros na hora de compilar...
Vídeo explicando como fazer:
Script utilizado no vídeo:
- Código:
using UnityEngine;
using System.Collections;
public class Laser : MonoBehaviour {
public Color corLaser = Color.red;
public int DistanciaDoLaser = 100;
public float LarguraInicial = 0.02f, LarguraFinal = 0.1f;
private GameObject luzColisao;
void Start () {
luzColisao = new GameObject ();
luzColisao.AddComponent<Light> ();
luzColisao.GetComponent<Light> ().intensity = 8;
luzColisao.GetComponent<Light> ().bounceIntensity = 8;
luzColisao.GetComponent<Light> ().range = LarguraFinal * 2;
luzColisao.GetComponent<Light> ().color = corLaser;
//
LineRenderer lineRenderer = gameObject.AddComponent<LineRenderer> ();
lineRenderer.material = new Material (Shader.Find ("Particles/Additive"));
lineRenderer.SetColors (corLaser, corLaser);
lineRenderer.SetWidth (LarguraInicial, LarguraFinal);
lineRenderer.SetVertexCount (2);
}
void Update () {
Vector3 PontoFinalDoLaser = transform.position + transform.forward * DistanciaDoLaser;
RaycastHit PontoDeColisao;
if (Physics.Raycast (transform.position, transform.forward, out PontoDeColisao, DistanciaDoLaser)) {
GetComponent<LineRenderer> ().SetPosition (0, transform.position);
GetComponent<LineRenderer> ().SetPosition (1, PontoDeColisao.point);
float distancia = Vector3.Distance(transform.position,PontoDeColisao.point)-0.03f;
luzColisao.transform.position = transform.position + transform.forward*distancia;
} else {
GetComponent<LineRenderer> ().SetPosition (0, transform.position);
GetComponent<LineRenderer> ().SetPosition (1, PontoFinalDoLaser);
luzColisao.transform.position = PontoFinalDoLaser;
}
}
}
Básicamente basta jogar o script no objeto que representa o Laser e já irá funcionar 100% :D
OBS: Não se esqueçam de ir em Edit > Project Settings > Graphics e adicionar o shader "Particles/Additive" na lista always, para evitar erros na hora de compilar...
Última edição por MarcosSchultz em Ter Jun 07, 2016 9:19 pm, editado 5 vez(es)
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
eu queria apertar f e o laser aparecer tem como?
liloc32- Iniciante
- PONTOS : 3426
REPUTAÇÃO : 2
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Basta criar uma variavel booleana e colocar todos os comandos do laser dentro de um if com ela...
depois fazer um comando para ativar e desativar a variavel com a letra F...
o script fica assim:
depois fazer um comando para ativar e desativar a variavel com a letra F...
o script fica assim:
- Código:
using UnityEngine;
using System.Collections;
public class Laser : MonoBehaviour {
public Color corLaser = Color.red;
public int DistanciaDoLaser = 100;
public float LarguraInicial = 0.02f, LarguraFinal = 0.1f;
private GameObject luzColisao;
private Vector3 posicLuz;
private bool ligado;
void Start () {
luzColisao = new GameObject ();
luzColisao.AddComponent<Light> ();
luzColisao.GetComponent<Light> ().intensity = 8;
luzColisao.GetComponent<Light> ().bounceIntensity = 8;
luzColisao.GetComponent<Light> ().range = LarguraFinal * 2;
luzColisao.GetComponent<Light> ().color = corLaser;
posicLuz = new Vector3 (0, 0, LarguraFinal);
//
LineRenderer lineRenderer = gameObject.AddComponent<LineRenderer> ();
lineRenderer.material = new Material (Shader.Find ("Particles/Additive"));
lineRenderer.SetColors (corLaser, corLaser);
lineRenderer.SetWidth (LarguraInicial, LarguraFinal);
lineRenderer.SetVertexCount (2);
}
void Update () {
if (ligado == true) {
luzColisao.SetActive(true);
Vector3 PontoFinalDoLaser = transform.position + transform.forward * DistanciaDoLaser;
RaycastHit PontoDeColisao;
if (Physics.Raycast (transform.position, transform.forward, out PontoDeColisao, DistanciaDoLaser)) {
GetComponent<LineRenderer> ().SetPosition (0, transform.position);
GetComponent<LineRenderer> ().SetPosition (1, PontoDeColisao.point);
luzColisao.transform.position = (PontoDeColisao.point - posicLuz);
} else {
GetComponent<LineRenderer> ().SetPosition (0, transform.position);
GetComponent<LineRenderer> ().SetPosition (1, PontoFinalDoLaser);
luzColisao.transform.position = PontoFinalDoLaser;
}
} else {
GetComponent<LineRenderer> ().SetPosition (0, transform.position);
GetComponent<LineRenderer> ().SetPosition (1, transform.position);
luzColisao.SetActive(false);
}
if (Input.GetKeyDown ("f")) {
ligado = !ligado;
}
}
}
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
tem um problema, o Luz do lazer so aparece na direção de uma parede no eixo 0
acho que a solução seria agrupar os objetos criados.
[img][/img]
[img][/img]
[img][/img]
acho que a solução seria agrupar os objetos criados.
[img][/img]
[img][/img]
[img][/img]
Yuri Heinz- Avançado
- PONTOS : 3613
REPUTAÇÃO : 38
Idade : 28
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
o problema ta na hora que rotaciona o lazer, dai ela subtrai a posição, mas sempre no mesmo eixo
ta nessa linha aqui, tem que mudar alguma coisa
LuzColisao.transform.position = (PontoDeColisao.point - posicLuz);
linha 33 no seu código,
estou assistindo aos tutoriais de C# queria aprender mais sobre instanciar objetos, muito bom trabalho abraço
ta nessa linha aqui, tem que mudar alguma coisa
LuzColisao.transform.position = (PontoDeColisao.point - posicLuz);
linha 33 no seu código,
estou assistindo aos tutoriais de C# queria aprender mais sobre instanciar objetos, muito bom trabalho abraço
Yuri Heinz- Avançado
- PONTOS : 3613
REPUTAÇÃO : 38
Idade : 28
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Hmm, não tinha reparado nisto...
Uma solução simples é fazer uma filiação da luz dando um transform.parent na camera. Ai não tem erro.
Uma solução simples é fazer uma filiação da luz dando um transform.parent na camera. Ai não tem erro.
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
LuzColisao.transform.parent ;
Ficaria assim a linha ?, dai criaria o objeto luz como objeto filho.
Ficaria assim a linha ?, dai criaria o objeto luz como objeto filho.
Yuri Heinz- Avançado
- PONTOS : 3613
REPUTAÇÃO : 38
Idade : 28
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
não sei se vc percebeu, mas eu sou burro, não to conseguindo filiar o objeto.
manda o código do transform.parent
manda o código do transform.parent
Yuri Heinz- Avançado
- PONTOS : 3613
REPUTAÇÃO : 38
Idade : 28
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Acabei fazendo uma pequena correção no script original... Agora está 100% ( más não se esqueçam de ir em Edit > Project Settings > Graphics e adicionar o shader "Particles/Additive" na lista always, para evitar erros...)
- Código:
using UnityEngine;
using System.Collections;
public class Laser : MonoBehaviour {
public Color corLaser = Color.red;
public int DistanciaDoLaser = 100;
public float LarguraInicial = 0.02f, LarguraFinal = 0.1f;
private GameObject luzColisao;
void Start () {
luzColisao = new GameObject ();
luzColisao.AddComponent<Light> ();
luzColisao.GetComponent<Light> ().intensity = 8;
luzColisao.GetComponent<Light> ().bounceIntensity = 8;
luzColisao.GetComponent<Light> ().range = LarguraFinal * 2;
luzColisao.GetComponent<Light> ().color = corLaser;
//
LineRenderer lineRenderer = gameObject.AddComponent<LineRenderer> ();
lineRenderer.material = new Material (Shader.Find ("Particles/Additive"));
lineRenderer.SetColors (corLaser, corLaser);
lineRenderer.SetWidth (LarguraInicial, LarguraFinal);
lineRenderer.SetVertexCount (2);
}
void Update () {
Vector3 PontoFinalDoLaser = transform.position + transform.forward * DistanciaDoLaser;
RaycastHit PontoDeColisao;
if (Physics.Raycast (transform.position, transform.forward, out PontoDeColisao, DistanciaDoLaser)) {
GetComponent<LineRenderer> ().SetPosition (0, transform.position);
GetComponent<LineRenderer> ().SetPosition (1, PontoDeColisao.point);
float distancia = Vector3.Distance(transform.position,PontoDeColisao.point)-0.03f;
luzColisao.transform.position = transform.position + transform.forward*distancia;
} else {
GetComponent<LineRenderer> ().SetPosition (0, transform.position);
GetComponent<LineRenderer> ().SetPosition (1, PontoFinalDoLaser);
luzColisao.transform.position = PontoFinalDoLaser;
}
}
}
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Ola dinovo kkk... Como faco para add 3 quantidade de tempo nesse script...
Sendo eles...
Inicio = começa desativado e depois de 1s ( ou menos ) ativa novamente.
Reload = desativa o laser quando apertar Input.GetKey("r") e depois de um certo tempo ativa novamente.
Mira = desativa quando apertar GetButton("Fire2") e ativa novamente depois q soltar o mesmo...
Eu sei q é pedir de mais, só q vcs manja da parada, então se poder me ajudar Ficarei muito grato.
Desde já agradeço a todos e Parabéns pelo site...
Sendo eles...
Inicio = começa desativado e depois de 1s ( ou menos ) ativa novamente.
Reload = desativa o laser quando apertar Input.GetKey("r") e depois de um certo tempo ativa novamente.
Mira = desativa quando apertar GetButton("Fire2") e ativa novamente depois q soltar o mesmo...
Eu sei q é pedir de mais, só q vcs manja da parada, então se poder me ajudar Ficarei muito grato.
Desde já agradeço a todos e Parabéns pelo site...
exgame2016- Iniciante
- PONTOS : 3015
REPUTAÇÃO : 1
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
exgame2016 escreveu:Ola dinovo kkk... Como faco para add 3 quantidade de tempo nesse script...
Sendo eles...
Inicio = começa desativado e depois de 1s ( ou menos ) ativa novamente.
Reload = desativa o laser quando apertar Input.GetKey("r") e depois de um certo tempo ativa novamente.
Mira = desativa quando apertar GetButton("Fire2") e ativa novamente depois q soltar o mesmo...
Eu sei q é pedir de mais, só q vcs manja da parada, então se poder me ajudar Ficarei muito grato.
Desde já agradeço a todos e Parabéns pelo site...
Tem como criar um tópico específico para esta dúvida, postando o script como você está utilizando e tudo mais?
É uma implementação simples, usando IENumerator.
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Atualizando o código, pois alguns métodos ficaram obsoletos.
Obs: já começa com o laser ligado.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FAZERLASER : MonoBehaviour {
//adiciona
//OBS: Não se esqueçam de ir em Edit > Project Settings > Graphics e adicionar
// o shader "Particles/Additive" na lista always, para evitar erros na hora de compilar...
public Color corLaser = Color.red;
public Color corLaserf = Color.blue;
public int DistanciaDoLaser = 100;
public float LarguraInicial = 0.02f, LarguraFinal = 0.1f;
private GameObject luzColisao;
private Vector3 posicLuz;
private bool ligado=true;
void Start()
{
luzColisao = new GameObject();
luzColisao.AddComponent<Light>();
luzColisao.GetComponent<Light>().intensity = 8;
luzColisao.GetComponent<Light>().bounceIntensity = 8;
luzColisao.GetComponent<Light>().range = LarguraFinal * 2;
luzColisao.GetComponent<Light>().color = corLaser;
posicLuz = new Vector3(0, 0, LarguraFinal);
//
LineRenderer lineRenderer = gameObject.AddComponent<LineRenderer>();
lineRenderer.material = new Material(Shader.Find("Particles/Additive"));
//obsoletos
http://lineRenderer.SetColors(corLaser, corLaser);
http://lineRenderer.SetWidth(LarguraInicial, LarguraFinal);
http://lineRenderer.SetVertexCount(2);
//mudar para:
lineRenderer.startColor = corLaser;
lineRenderer.endColor = corLaserf;
lineRenderer.startWidth = LarguraInicial;
lineRenderer.endWidth = LarguraFinal;
lineRenderer.positionCount = 2;
}
void Update()
{
if (ligado)
{
luzColisao.SetActive(true);
Vector3 PontoFinalDoLaser = transform.position + transform.forward * DistanciaDoLaser;
RaycastHit PontoDeColisao;
if (Physics.Raycast(transform.position, transform.forward, out PontoDeColisao, DistanciaDoLaser))
{
GetComponent<LineRenderer>().SetPosition(0, transform.position);
GetComponent<LineRenderer>().SetPosition(1, PontoDeColisao.point);
luzColisao.transform.position = (PontoDeColisao.point - posicLuz);
}
else
{
GetComponent<LineRenderer>().SetPosition(0, transform.position);
GetComponent<LineRenderer>().SetPosition(1, PontoFinalDoLaser);
luzColisao.transform.position = PontoFinalDoLaser;
}
}
else
{
GetComponent<LineRenderer>().SetPosition(0, transform.position);
GetComponent<LineRenderer>().SetPosition(1, transform.position);
luzColisao.SetActive(false);
}
if (Input.GetKeyDown("f"))
{
ligado = !ligado;
}
}
}
Obs: já começa com o laser ligado.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FAZERLASER : MonoBehaviour {
//adiciona
//OBS: Não se esqueçam de ir em Edit > Project Settings > Graphics e adicionar
// o shader "Particles/Additive" na lista always, para evitar erros na hora de compilar...
public Color corLaser = Color.red;
public Color corLaserf = Color.blue;
public int DistanciaDoLaser = 100;
public float LarguraInicial = 0.02f, LarguraFinal = 0.1f;
private GameObject luzColisao;
private Vector3 posicLuz;
private bool ligado=true;
void Start()
{
luzColisao = new GameObject();
luzColisao.AddComponent<Light>();
luzColisao.GetComponent<Light>().intensity = 8;
luzColisao.GetComponent<Light>().bounceIntensity = 8;
luzColisao.GetComponent<Light>().range = LarguraFinal * 2;
luzColisao.GetComponent<Light>().color = corLaser;
posicLuz = new Vector3(0, 0, LarguraFinal);
//
LineRenderer lineRenderer = gameObject.AddComponent<LineRenderer>();
lineRenderer.material = new Material(Shader.Find("Particles/Additive"));
//obsoletos
http://lineRenderer.SetColors(corLaser, corLaser);
http://lineRenderer.SetWidth(LarguraInicial, LarguraFinal);
http://lineRenderer.SetVertexCount(2);
//mudar para:
lineRenderer.startColor = corLaser;
lineRenderer.endColor = corLaserf;
lineRenderer.startWidth = LarguraInicial;
lineRenderer.endWidth = LarguraFinal;
lineRenderer.positionCount = 2;
}
void Update()
{
if (ligado)
{
luzColisao.SetActive(true);
Vector3 PontoFinalDoLaser = transform.position + transform.forward * DistanciaDoLaser;
RaycastHit PontoDeColisao;
if (Physics.Raycast(transform.position, transform.forward, out PontoDeColisao, DistanciaDoLaser))
{
GetComponent<LineRenderer>().SetPosition(0, transform.position);
GetComponent<LineRenderer>().SetPosition(1, PontoDeColisao.point);
luzColisao.transform.position = (PontoDeColisao.point - posicLuz);
}
else
{
GetComponent<LineRenderer>().SetPosition(0, transform.position);
GetComponent<LineRenderer>().SetPosition(1, PontoFinalDoLaser);
luzColisao.transform.position = PontoFinalDoLaser;
}
}
else
{
GetComponent<LineRenderer>().SetPosition(0, transform.position);
GetComponent<LineRenderer>().SetPosition(1, transform.position);
luzColisao.SetActive(false);
}
if (Input.GetKeyDown("f"))
{
ligado = !ligado;
}
}
}
osiasbezerra- Avançado
- PONTOS : 3596
REPUTAÇÃO : 8
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Crédito total do MArcos Schultz
osiasbezerra- Avançado
- PONTOS : 3596
REPUTAÇÃO : 8
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
como usa em 2d, eu fiz uns ajustes pra ver se pega em 2d, mais a cor fica sempre branca na aba game e na scene fica com a cor escolhida.
- Código:
using UnityEngine;
using System.Collections;
public class Mecanicas : MonoBehaviour
{
public Color corLaser = Color.red;
public int DistanciaDoLaser = 100;
public float LarguraInicial = 0.02f, LarguraFinal = 0.1f;
private GameObject luzColisao;
public LineRenderer lineRenderer;
void Start()
{
luzColisao = new GameObject();
luzColisao.AddComponent<Light>();
luzColisao.GetComponent<Light>().intensity = 8;
luzColisao.GetComponent<Light>().bounceIntensity = 8;
luzColisao.GetComponent<Light>().range = LarguraFinal * 2;
luzColisao.GetComponent<Light>().color = corLaser;
//
lineRenderer.material = new Material(Shader.Find("Particles/Additive"));
lineRenderer.SetColors(corLaser, corLaser);
lineRenderer.SetWidth(LarguraInicial, LarguraFinal);
lineRenderer.SetVertexCount(2);
}
void Update()
{
Vector3 PontoFinalDoLaser = transform.position + transform.right * DistanciaDoLaser;
RaycastHit2D PontoDeColisao = Physics2D.Raycast(transform.position, transform.right, DistanciaDoLaser);
if (PontoDeColisao.collider != null)
{
GetComponent<LineRenderer>().SetPosition(0, transform.position);
GetComponent<LineRenderer>().SetPosition(1, PontoDeColisao.point);
float distancia = Vector3.Distance(transform.position, PontoDeColisao.point) - 0.03f;
luzColisao.transform.position = transform.position + transform.right * distancia;
}
else
{
GetComponent<LineRenderer>().SetPosition(0, transform.position);
GetComponent<LineRenderer>().SetPosition(1, PontoFinalDoLaser);
luzColisao.transform.position = PontoFinalDoLaser;
}
}
}
Eduardoro39- Avançado
- PONTOS : 3257
REPUTAÇÃO : 11
Idade : 24
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Eduardoro39 escreveu:como usa em 2d, eu fiz uns ajustes pra ver se pega em 2d, mais a cor fica sempre branca
- Código:
using UnityEngine;
using System.Collections;
public class Mecanicas : MonoBehaviour
{
public Color corLaser = Color.red;
public int DistanciaDoLaser = 100;
public float LarguraInicial = 0.02f, LarguraFinal = 0.1f;
private GameObject luzColisao;
public LineRenderer lineRenderer;
void Start()
{
luzColisao = new GameObject();
luzColisao.AddComponent<Light>();
luzColisao.GetComponent<Light>().intensity = 8;
luzColisao.GetComponent<Light>().bounceIntensity = 8;
luzColisao.GetComponent<Light>().range = LarguraFinal * 2;
luzColisao.GetComponent<Light>().color = corLaser;
//
lineRenderer.material = new Material(Shader.Find("Particles/Additive"));
lineRenderer.SetColors(corLaser, corLaser);
lineRenderer.SetWidth(LarguraInicial, LarguraFinal);
lineRenderer.SetVertexCount(2);
}
void Update()
{
Vector3 PontoFinalDoLaser = transform.position + transform.right * DistanciaDoLaser;
RaycastHit2D PontoDeColisao = Physics2D.Raycast(transform.position, transform.right, DistanciaDoLaser);
if (PontoDeColisao.collider != null)
{
GetComponent<LineRenderer>().SetPosition(0, transform.position);
GetComponent<LineRenderer>().SetPosition(1, PontoDeColisao.point);
float distancia = Vector3.Distance(transform.position, PontoDeColisao.point) - 0.03f;
luzColisao.transform.position = transform.position + transform.right * distancia;
}
else
{
GetComponent<LineRenderer>().SetPosition(0, transform.position);
GetComponent<LineRenderer>().SetPosition(1, PontoFinalDoLaser);
luzColisao.transform.position = PontoFinalDoLaser;
}
}
}
Eduardoro39- Avançado
- PONTOS : 3257
REPUTAÇÃO : 11
Idade : 24
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Desculpe eu achei q estava editando mais reenviei o topico Edit: laser nao aparece com cor
Eduardoro39- Avançado
- PONTOS : 3257
REPUTAÇÃO : 11
Idade : 24
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Para 2D o sistema é o mesmo, apenas utilize a mesma largura inicial do que a largura final (sugiro 0.1).
Quanto a cor estar branca, eu precisaria de alguma print para ver do que se trata
Quanto a cor estar branca, eu precisaria de alguma print para ver do que se trata
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
http://prntscr.com/ktd46t e essa tambem http://prntscr.com/ktd4h0
Eduardoro39- Avançado
- PONTOS : 3257
REPUTAÇÃO : 11
Idade : 24
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Tente isto, deve funcionar:
- Código:
using UnityEngine;
using System.Collections;
public class Laser : MonoBehaviour {
//
//Feito na Unity 2017.1 por (schultzgames.com). Adaptação para 2D
//
public Color corLaser = Color.red;
public int DistanciaDoLaser = 100;
public float LarguraDoLaser = 0.1f;
public bool usarLuz = false;
GameObject luzColisao;
LineRenderer lineRenderer;
RaycastHit2D PontoDeColisao;
Vector2 PontoFinalDoLaser;
float distancia;
void Start () {
if (usarLuz) {
luzColisao = new GameObject ("Luz Laser");
luzColisao.AddComponent<Light> ();
luzColisao.GetComponent<Light> ().intensity = 8;
luzColisao.GetComponent<Light> ().bounceIntensity = 8;
luzColisao.GetComponent<Light> ().range = LarguraDoLaser * 2;
luzColisao.GetComponent<Light> ().color = corLaser;
}
//
lineRenderer = gameObject.AddComponent<LineRenderer> ();
lineRenderer.material = new Material (Shader.Find ("Particles/Additive"));
lineRenderer.startColor = corLaser;
lineRenderer.endColor = corLaser;
lineRenderer.startWidth = LarguraDoLaser;
lineRenderer.endWidth = LarguraDoLaser;
lineRenderer.material.SetColor("_TintColor", corLaser);
lineRenderer.positionCount = 2;
lineRenderer.sharedMaterial.color = corLaser;
}
void Update () {
PontoFinalDoLaser = transform.position + transform.right * DistanciaDoLaser;
PontoDeColisao = Physics2D.Raycast (transform.position, transform.right, DistanciaDoLaser);
if (PontoDeColisao.collider != null) {
lineRenderer.SetPosition (0, transform.position);
lineRenderer.SetPosition (1, PontoDeColisao.point);
if (usarLuz) {
distancia = Vector2.Distance (transform.position, PontoDeColisao.point) - 0.03f;
luzColisao.transform.position = transform.position + transform.right * distancia;
}
} else {
lineRenderer.SetPosition (0, transform.position);
lineRenderer.SetPosition (1, PontoFinalDoLaser);
if (usarLuz) {
luzColisao.transform.position = PontoFinalDoLaser;
}
}
}
}
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
o laser só ficou com a cor na aba scene print: http://prntscr.com/ktdgmv
Eduardoro39- Avançado
- PONTOS : 3257
REPUTAÇÃO : 11
Idade : 24
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Estranho, a instância do seu Shader "Particles/Additive" não está recebendo a cor. Talvez seja por causa da versão da Unity.
Vou tentar ver depois se trocar o _TintColor por apenas _Color resolve
Vou tentar ver depois se trocar o _TintColor por apenas _Color resolve
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Vou precisar do projeto dessa sua cena ai...
Aqui eu criei um projeto na 2018.2 e funciona tudo normal
Aqui eu criei um projeto na 2018.2 e funciona tudo normal
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
mandei o download do projeto no privado
Eduardoro39- Avançado
- PONTOS : 3257
REPUTAÇÃO : 11
Idade : 24
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Ok, o Shader não funciona muito bem em 2D. Tente isto:
OBS: Não se esqueçam de ir em Edit > Project Settings > Graphics e adicionar o shader "Unlit/Color" na lista always, para evitar erros na hora de compilar...
- Código:
using UnityEngine;
using System.Collections;
public class Laser : MonoBehaviour
{
//
//Feito na Unity 2017.1 por (schultzgames.com). Adaptação para 2D
//
public Color corLaser = Color.red;
public int DistanciaDoLaser = 100;
public float LarguraDoLaser = 0.1f;
public bool usarLuz = false;
GameObject luzColisao;
LineRenderer lineRenderer;
RaycastHit2D PontoDeColisao;
Vector2 PontoFinalDoLaser;
float distancia;
void Start()
{
if (usarLuz)
{
luzColisao = new GameObject("Luz Laser");
luzColisao.AddComponent<Light>();
luzColisao.GetComponent<Light>().intensity = 8;
luzColisao.GetComponent<Light>().bounceIntensity = 8;
luzColisao.GetComponent<Light>().range = LarguraDoLaser * 2;
luzColisao.GetComponent<Light>().color = corLaser;
}
//
lineRenderer = gameObject.AddComponent<LineRenderer>();
lineRenderer.material = new Material(Shader.Find("Unlit/Color"));
lineRenderer.startColor = corLaser;
lineRenderer.endColor = corLaser;
lineRenderer.startWidth = LarguraDoLaser;
lineRenderer.endWidth = LarguraDoLaser;
lineRenderer.material.SetColor("_Color", corLaser);
lineRenderer.positionCount = 2;
lineRenderer.sharedMaterial.color = corLaser;
}
void Update()
{
PontoFinalDoLaser = transform.position + transform.right * DistanciaDoLaser;
PontoDeColisao = Physics2D.Raycast(transform.position, transform.right, DistanciaDoLaser);
if (PontoDeColisao.collider != null)
{
lineRenderer.SetPosition(0, transform.position);
lineRenderer.SetPosition(1, PontoDeColisao.point);
if (usarLuz)
{
distancia = Vector2.Distance(transform.position, PontoDeColisao.point) - 0.03f;
luzColisao.transform.position = transform.position + transform.right * distancia;
}
}
else
{
lineRenderer.SetPosition(0, transform.position);
lineRenderer.SetPosition(1, PontoFinalDoLaser);
if (usarLuz)
{
luzColisao.transform.position = PontoFinalDoLaser;
}
}
}
}
OBS: Não se esqueçam de ir em Edit > Project Settings > Graphics e adicionar o shader "Unlit/Color" na lista always, para evitar erros na hora de compilar...
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
A linha não aparece agora na aba game , mais na aba scene ta com cor , sera que é porque eu atualizei pra Unity 2018.2.7?
Eduardoro39- Avançado
- PONTOS : 3257
REPUTAÇÃO : 11
Idade : 24
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Eduardoro39 escreveu:A linha não aparece agora na aba game , mais na aba scene ta com cor , sera que é porque eu atualizei pra Unity 2018.2.7?
Acredito que não.
Você não esta de repente com problemas no eixo Z ,onde a linha está ficando atrás dos sprites?
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Não eu ate desativei os sprite pra ver a linha mas ainda nao vejo nada
Eduardoro39- Avançado
- PONTOS : 3257
REPUTAÇÃO : 11
Idade : 24
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Consegui resolver eu mudei a camera para perspective e depois voltei em ortografic ai dei play e apareceu
Eduardoro39- Avançado
- PONTOS : 3257
REPUTAÇÃO : 11
Idade : 24
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
A não foi o que você falou,foi porque eu diminui o Z ai apareceu do outro lado
Eduardoro39- Avançado
- PONTOS : 3257
REPUTAÇÃO : 11
Idade : 24
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Usei este script e blz, mas os personagens não estão sendo detectados pelo raycast...sabe dizer por que?
wagnercaragua- Iniciante
- PONTOS : 2120
REPUTAÇÃO : 6
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
wagnercaragua escreveu:Usei este script e blz, mas os personagens não estão sendo detectados pelo raycast...sabe dizer por que?
Provavelmente por que o Player está em alguma layer tipo "IgnoreRaycast" ou por que ele não possui colisor... Ou o colisor é um meshCollider não convexo
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Olá estou estudando para criar um game parecido com guitar hero, estava aqui pensando, quando tem as notas musicais, umas tem duração rápida, outras duração maior, no jogo original, elas tem uma linha que devemos ficar apertando conforme a duração da nota dentro da musica, alguém tem ideia de como ser feito isso ?osiasbezerra escreveu:Crédito total do MArcos Schultz
pois não poderia ser usado o drawline, ? mais como saber o inicio de uma nota e o final dela ? dentro de uma melodia ? e pode mais notas, desde já obrigado
walney- Iniciante
- PONTOS : 3293
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Eu estou usando esse Script do laser, mas queria saber se existe algum jeito de fazer o laser ser pego por um Collider de outro objeto.(Quero destruir Asteroid's com o laser).
Korpion- Iniciante
- PONTOS : 869
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Eu coloquei um colisor (capsule collider) dentro do laser e usei uma tag para executar uma ação que eu queria, talvez você possa fazer algo do tipo.
Tópicos semelhantes
» [TUTORIAL] Unity 3D - Como fazer um imã simples.
» [TUTORIAL] Como fazer um Sol Realista na Unity 5 ( Sun Shafts )
» [TUTORIAL] Como fazer um ponteiro de VELOCIDADE, RPM, etc na Unity
» [TUTORIAL] Como fazer uma Barra de Loading na Unity 5
» [TUTORIAL] Como fazer um pano ou cortina na Unity 5 ( Cloth )
» [TUTORIAL] Como fazer um Sol Realista na Unity 5 ( Sun Shafts )
» [TUTORIAL] Como fazer um ponteiro de VELOCIDADE, RPM, etc na Unity
» [TUTORIAL] Como fazer uma Barra de Loading na Unity 5
» [TUTORIAL] Como fazer um pano ou cortina na Unity 5 ( Cloth )
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos