unity3d学习(一)
sshong 发表于2013年2月3日 11:39:01 更新于2013年2月6日 23:44:15
原文

以下均为开发2d游戏相关。

1、如果用unity开发2d游戏,需要将主摄像头设置为orthgrahphic正交模式,同时可以设置orthgrahphicSize为视图高度的一半,这样1像素单位等同于unity里的1单位。
Camera.main.orthographicSize = Screen.height / 2;
unity projection

2、unity采用左手坐标系,如果开发2d游戏,主摄像头都是从z小的方向向z大的方向,所以看到的x y如图方向
unity坐标系

3、如上,如果熟悉开发flash的人,就知道这个坐标系与flash的坐标系Y向是反的。

4、自己写一个矩形(两个三角形)贴图(此图尺寸768*325),以此展示unity的mesh相关。

一个gameobject需要增加meshFilter和meshRender两个component。

meshFilter中设置mesh属性,而mesh需要设置顶点坐标,uv,三角形顶点序号(顺时针)

所谓uv,是指一坨三角形顶点,对应到一张平面图中,每个顶点在这张平面图中的位置(0到1之间,代表百分比)

material需要设置shader和texture材质。
public override void Start()
        {
            base.Start();
            //
            Vector3[] vertices = { new Vector3(768,325,0), new Vector3(768,0,0), new Vector3(0,0,0), new Vector3(0,325,0) };
            Vector2[] uvs = { new Vector2(1, 1), new Vector2(1, 0), new Vector2(0, 0), new Vector2(0, 1) };
            int[] triangles = {0,1,2,2,3,0};
            //
            MeshFilter meshfilter = gameObject.AddComponent<MeshFilter>();
            Mesh mesh = new Mesh();
            mesh.vertices = vertices;
            mesh.uv = uvs;
            mesh.triangles = triangles;
            //
            meshfilter.mesh = mesh;
            //
            Shader shader = Shader.Find("Sprite/Vertex Colored, Fast");
            Material mat = new Material(shader);
            mat.mainTexture = Resources.Load("map") as Texture;
            //
            MeshRenderer render = gameObject.AddComponent(typeof(MeshRenderer)) as MeshRenderer;
            render.material = mat;
        }
标签:unity3d分类:Unity3d阅读:2911
评论
暂无评论
添加评论
您的大名,限长10汉字,20英文(*)
电子信箱(*)
您的网站
正文,限长500汉字,1000英文(*)
验证码(*) 单击刷新验证码
联系我
博客订阅