[TUTORIAL] Desenhar na tela com o MOUSE
4 participantes
Página 1 de 1
[TUTORIAL] Desenhar na tela com o MOUSE
Olá pessoal, estou trazendo ao fórum um tutorial de como desenhar na tela com o mouse
OBS: Este tutorial não é de minha autoria, o tutorial original encontra-se neste link: http://www.theappguruz.com/blog/draw-line-mouse-move-detect-line-collision-unity2d-unity3d
Enfim, para desenhar na tela é muito simples, basta Criar um novo script em C# com o nome "DesenharNaTela" e utilizar o código abaixo nele:
Depois disto, jogue o script na sua câmera, e na variável do shader, clique na bolinha para procurar pelo shader "Particles/Additive" e selecione-o.
Depois que isto for feito, você já conseguirá desenhar na tela com o mouse :D
OBS: Este tutorial não é de minha autoria, o tutorial original encontra-se neste link: http://www.theappguruz.com/blog/draw-line-mouse-move-detect-line-collision-unity2d-unity3d
Enfim, para desenhar na tela é muito simples, basta Criar um novo script em C# com o nome "DesenharNaTela" e utilizar o código abaixo nele:
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class DesenharNaTela : MonoBehaviour{
private LineRenderer line;
private bool isMousePressed;
public List<Vector3> pointsList;
private Vector3 mousePos;
public Shader shaderDoDesenho;//line.material = new Material (Shader.Find ("Particles/Additive"));
struct myLine{
public Vector3 StartPoint;
public Vector3 EndPoint;
};
void Awake (){
line = gameObject.AddComponent<LineRenderer> ();
line.material = new Material (shaderDoDesenho);
line.SetVertexCount (0);
line.SetWidth (0.1f, 0.1f);
line.SetColors (Color.green, Color.green);
line.useWorldSpace = true;
isMousePressed = false;
pointsList = new List<Vector3> ();
}
void Update (){
if (Input.GetMouseButtonDown (0)) {
isMousePressed = true;
line.SetVertexCount (0);
pointsList.RemoveRange (0, pointsList.Count);
line.SetColors (Color.green, Color.green);
}
if (Input.GetMouseButtonUp (0)) {
isMousePressed = false;
}
if (isMousePressed) {
mousePos = Camera.main.ScreenToWorldPoint (Input.mousePosition);
mousePos.z = 0;
if (!pointsList.Contains (mousePos)) {
pointsList.Add (mousePos);
line.SetVertexCount (pointsList.Count);
line.SetPosition (pointsList.Count - 1, (Vector3)pointsList [pointsList.Count - 1]);
if (isLineCollide ()) {
isMousePressed = false;
line.SetColors (Color.red, Color.red);
}
}
}
}
private bool isLineCollide (){
if (pointsList.Count < 2)
return false;
int TotalLines = pointsList.Count - 1;
myLine[] lines = new myLine[TotalLines];
if (TotalLines > 1) {
for (int i=0; i<TotalLines; i++) {
lines [i].StartPoint = (Vector3)pointsList [i];
lines [i].EndPoint = (Vector3)pointsList [i + 1];
}
}
for (int i=0; i<TotalLines-1; i++) {
myLine currentLine;
currentLine.StartPoint = (Vector3)pointsList [pointsList.Count - 2];
currentLine.EndPoint = (Vector3)pointsList [pointsList.Count - 1];
if (isLinesIntersect (lines [i], currentLine))
return true;
}
return false;
}
private bool checkPoints (Vector3 pointA, Vector3 pointB){
return (pointA.x == pointB.x && pointA.y == pointB.y);
}
private bool isLinesIntersect (myLine L1, myLine L2){
if (checkPoints (L1.StartPoint, L2.StartPoint) ||
checkPoints (L1.StartPoint, L2.EndPoint) ||
checkPoints (L1.EndPoint, L2.StartPoint) ||
checkPoints (L1.EndPoint, L2.EndPoint))
return false;
return((Mathf.Max (L1.StartPoint.x, L1.EndPoint.x) >= Mathf.Min (L2.StartPoint.x, L2.EndPoint.x)) &&
(Mathf.Max (L2.StartPoint.x, L2.EndPoint.x) >= Mathf.Min (L1.StartPoint.x, L1.EndPoint.x)) &&
(Mathf.Max (L1.StartPoint.y, L1.EndPoint.y) >= Mathf.Min (L2.StartPoint.y, L2.EndPoint.y)) &&
(Mathf.Max (L2.StartPoint.y, L2.EndPoint.y) >= Mathf.Min (L1.StartPoint.y, L1.EndPoint.y))
);
}
}
Depois disto, jogue o script na sua câmera, e na variável do shader, clique na bolinha para procurar pelo shader "Particles/Additive" e selecione-o.
Depois que isto for feito, você já conseguirá desenhar na tela com o mouse :D
Re: [TUTORIAL] Desenhar na tela com o MOUSE
No meu não desenhou.
Chilinger- MembroAvançado
- PONTOS : 4094
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: [TUTORIAL] Desenhar na tela com o MOUSE
Chilinger escreveu:No meu não desenhou.
Apareceu algum erro?
Re: [TUTORIAL] Desenhar na tela com o MOUSE
o shader foi feito mas não deu erro nenhum
Chilinger- MembroAvançado
- PONTOS : 4094
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: [TUTORIAL] Desenhar na tela com o MOUSE
Hm... aqui também não funcionou coloca o script, roda o jogo, fica clicando e vindo umas coisas la, n da erro nenhum, mais não aparece nada, deve ser algo na shader :/
coloquei so pra testar msm...
unity 2017.1.0f3
coloquei so pra testar msm...
unity 2017.1.0f3
Extreme Craft- Avançado
- PONTOS : 3278
REPUTAÇÃO : 30
Idade : 23
Áreas de atuação : C# , Blender , Unity
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] Ocultar Mouse/Cursor na tela
» [TUTORIAL]Customizar Mouse
» [TUTORIAL] Arrastar Objetos com o mouse
» MOUSE NA TELA
» [TUTORIAL] Zoom de Camera com o Scroll do Mouse
» [TUTORIAL]Customizar Mouse
» [TUTORIAL] Arrastar Objetos com o mouse
» MOUSE NA TELA
» [TUTORIAL] Zoom de Camera com o Scroll do Mouse
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos