[Curiosité] Dessiner avec le GUI
Re: [Curiosité] Dessiner avec le GUI
mon ptit loulou,
tu viens de nous fournir des infos précieuses.
tu viens de nous fournir des infos précieuses.
Re: [Curiosité] Dessiner avec le GUI
Sympa en effet le petit tuto sur le mixage des deux type de cameras
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ
Re: [Curiosité] Dessiner avec le GUI
Je viens d'écrire le code pour dessiner une ligne en 3d.
Code : Tout sélectionner
function CreateLine3D(x1,y1,z1,x2,y2,z2) {
var go = new GameObject("line");
go.AddComponent(MeshFilter);
go.AddComponent(MeshRenderer);
var mesh = go.GetComponent(MeshFilter).mesh;
var array = new Array( mesh.vertices );
var arrayuv = new Array( mesh.uv );
mesh.Clear();
array.push( Vector3(x1,y1,z1));
array.push( Vector3((x1+x2)/2,(y1+y2)/2,(z1+z2)/2));
array.push( Vector3(x2,y2,z2));
mesh.vertices = array.ToBuiltin(Vector3);
arrayuv.push( Vector2(0,0));
arrayuv.push( Vector2(0,0));
arrayuv.push( Vector2(1,0));
mesh.uv = arrayuv.ToBuiltin(Vector2);
array = new Array( mesh.triangles );
array.push( 0 );
array.push( 2 );
array.push( 1 );
mesh.triangles = array.ToBuiltin(int);
mesh.RecalculateNormals();
return go;
}
J'aimerai rendre le ligne sur des coordonnées pixelisé 2D avec l'idée de loulou.
Avez-vous une idée ?
Re: [Curiosité] Dessiner avec le GUI
Fichier Line2D.cs
Fichier TestLine2D.cs
Pour tester il faut mettre le script TestLine2D sur une camera ortho qui a un transform :
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
public class Drawing : object {
public static GameObject Line2D(Vector2 begin, Vector2 end, float size)
{
GameObject _gameObject;
MeshFilter _meshFilter;
MeshRenderer _meshRenderer ;
_gameObject = new GameObject("Line");
_meshFilter = _gameObject.AddComponent<MeshFilter>() as MeshFilter;
_meshRenderer = _gameObject.AddComponent<MeshRenderer>() as MeshRenderer;
_meshRenderer.material = new Material(Shader.Find("Self-Illumin/Diffuse"));
Mesh mesh = new Mesh();
mesh.name = "Line";
mesh.Clear();
_meshFilter.mesh = mesh;
Vector3[] vertices = new Vector3[4];
vertices[0] = new Vector3(0.0f, -0.5f, 0.0f);
vertices[1] = new Vector3(1.0f, -0.5f, 0.0f);
vertices[2] = new Vector3(1.0f, 0.5f, 0.0f);
vertices[3] = new Vector3(0.0f, 0.5f, 0.0f);
mesh.vertices = vertices;
Vector2[] uv = new Vector2[4];
uv[0] = new Vector2(0.0f, 0.0f);
uv[1] = new Vector2(1.0f, 0.0f);
uv[2] = new Vector2(1.0f, 1.0f);
uv[3] = new Vector2(0.0f, 1.0f);
mesh.uv = uv;
Vector3[] normals = new Vector3[4];
normals[0] = new Vector3(0.0f, 0.0f, 1.0f);
normals[1] = new Vector3(0.0f, 0.0f, 1.0f);
normals[2] = new Vector3(0.0f, 0.0f, 1.0f);
normals[3] = new Vector3(0.0f, 0.0f, 1.0f);
mesh.normals = normals;
int[] triangles = {0, 1, 2, 0, 2, 3};
mesh.triangles = triangles;
Vector2 direction = new Vector2(end.x - begin.x, end.y - begin.y);
float angle = Vector2.Angle(-Vector2.right, direction);
if (end.y > begin.y) angle *= -1;
_gameObject.transform.localRotation =Quaternion.Euler(0.0f, 0.0f, angle);
_gameObject.transform.localScale = new Vector3(-Vector2.Distance(begin, end), size, 1.0f);
_gameObject.transform.position = new Vector3(begin.x, begin.y, 0.0f);
return _gameObject;
}
}
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
[RequireComponent (typeof (Camera))]
public class TestLine2D : MonoBehaviour {
private Vector3 _begin, _end;
private bool _beginIsSet;
private float _size = 0.5f;
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown(0))
{
if (!this._beginIsSet)
{
this._begin = camera.ScreenToWorldPoint(Input.mousePosition);
this._beginIsSet = true;
}
else
{
this._end = camera.ScreenToWorldPoint(Input.mousePosition);
this._beginIsSet = false;
Drawing.Line2D(new Vector2(this._begin.x, this._begin.y), new Vector2(this._end.x, this._end.y),this._size);
}
}
}
}
- Position
- x: 0
y: 0
z: 10
- x: 0
y: 180
z : 0
- x: 0
Re: [Curiosité] Dessiner avec le GUI
Je reçois ce message
Assets/TestLine2D.cs(4,18): error CS0101: The namespace `global::' already contains a definition for `Drawing'
Re: [Curiosité] Dessiner avec le GUI
Changes le nom en DrawingToto (c'est un exemple ) en reprenant bien ce nom partout dans le code, et ça devrait fonctionner. Cela vient du fait que "Drawing" existe déjà dans Unity.
Re: [Curiosité] Dessiner avec le GUI
Ok, j'ai plus l'erreur mais j'ai rien à l'écran.
Re: [Curiosité] Dessiner avec le GUI
Tu as bien créé une camera comme je l'ai expliqué et ajouté le script de teste a la camera ?
J'ai pas le temps ce soir mais si tu as toujours ce problème, je te fais un petit projet d'exemple demain matin.
Au faite, j'ai fait mes tests sur Unity 3.0.2f4, autrement dit je ne suis pas a jour. Je vérifie sur une version a jour demain.
J'ai pas le temps ce soir mais si tu as toujours ce problème, je te fais un petit projet d'exemple demain matin.
Au faite, j'ai fait mes tests sur Unity 3.0.2f4, autrement dit je ne suis pas a jour. Je vérifie sur une version a jour demain.
Re: [Curiosité] Dessiner avec le GUI
Voici un projet avec une scene qui marche :
http://www.remibodin.fr/files/DrawLine.zip
Quand tu lances la scene, un premier clique souris sur l'ecran definit le point de depart de la ligne, un second clique definie le point d'arrivé et crée la ligne.
Je viens de tester avec Unity 3.4.2f2 (a jour donc) et pas de souci.
http://www.remibodin.fr/files/DrawLine.zip
Quand tu lances la scene, un premier clique souris sur l'ecran definit le point de depart de la ligne, un second clique definie le point d'arrivé et crée la ligne.
Je viens de tester avec Unity 3.4.2f2 (a jour donc) et pas de souci.
Re: [Curiosité] Dessiner avec le GUI
pas mal en effet, cela tourne bien. C'est de plus plutôt instructif à décortiquer comme code (pour ce qui me concerne).Loulou a écrit :Je viens de tester avec Unity 3.4.2f2 (a jour donc) et pas de souci.
Merci
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ