终于迈出了学Unity的第一步
很久以来,都想自己做一款,属于自己的游戏。这个想法到现在持续了可能有十年之久了,一直停留在想法上,终于在9月,被一款刷屏级的国产独立游戏(就是你们知道的那个)《太吾绘卷》深深地刺激了。在网上看了很多主创茄子的故事,从他的想法,到不断的尝试,从RPGMaker,到Unity,十数年旁若无人的坚持,才有了这款心血之作。第一次真真正正的崇拜一个人,不仅仅是卓越的游戏策划能力、在我现在看来高不可攀的代码能力,更重要的是他在百度贴吧上仅有的几篇帖子中透露出的努力、真诚、谦逊等等各种人格魅力。终于决定迈出自己的那一步,靠自己的双手实现脑海中不断涌现的想法。
大学学过一些编程,必修课的C语言,选修的C++,然而毕竟不是计算机专业,只能说知道最最基本的概念。后来陆陆续续看过一些书,然而还是停留在看书学语法学了又忘记的阶段,远没有踏出做游戏的第一步。我不是一个善于坚持的人,也是经历了太多次从入门到放弃,以至于年少时就有的“自己做游戏”的梦想只是让我变成了一名游戏策划,靠着别人的代码,实现老板的想法。然而时常接触到一些代码,让我不断的提醒自己,自己虽然算是行内人,但是制作游戏的梦还有很长的路要走。
其实最近的这波学习热情起始于七八月,数据分析尝试学一些简单的SQL,顺带看了一些JS。做了几个月的小游戏,大概知道小游戏的开发难度,意识到小游戏上或许能够更快的接近自己做游戏的梦了,于是开始找JS的资料,从w3school看起,后来转战到w3cschool,陆陆续续学了JS、html、CSS等等几个微课,然后就有了被太吾绘卷刺激到的经历。开始学C#,准备用unity开搞(也是因为工作的关系,之前用过一两年的unity),或许是最合适的一条路了。
10.19学习笔记
扯了很多情感的东西,差点忘了这是一篇学习笔记。如果有人看的话,可以跳过上面这段,直接从这里开始。
说下前期准备吧:Unity2018(官网下的个人版,免费)、VS(Unity附带安装的)、chrome(也是今天突然想起了它的网页翻译功能)、再就是unity官方教程(https://unity3d.com/cn/learn/tutorials)翻译了以后可以毫无障碍的阅读。令人惊讶的是通过腾讯视频播放的教学视频,居然有中英对照字母,可以说是很贴心了。
从互动教程开始,大约半小时就能完成,紧接着就是roll-a-ball教程。算上简介,只有9个视频,总时长大概一个多小时,目前学到第6个完,简单记录一下我理解的重难点吧,真的很小白,大神勿喷哈。
1.对象创建了,记得reset坐标,至于有什么好处,可能是美观一些吧。
2.plane(平面)没厚度
3.创建材质后,可以直接拖到scene中的物体上
4.add component 可以直接new script 还挺方便的,如果是手动创建的,记得要再手动拖到文件夹里
5.update用于逐帧调用,Fixedupdate我理解是每个不同的物理状态才调用一次,有可能几帧都是一个物理状态的时候,性能就省出来了
6.物理运动的话,Input.GetAxis比Input.Getkey好用很多,定义一个Horizontal,能搞定←→AD四个键,定义一个Vertical,能搞定↑↓WS四个键,具体Edit—Project Settings—Input里有,不过其他的参数目前还不是很懂
7.用好官方的脚本API(https://docs.unity3d.com/ScriptReference/index.html),后面代码结构熟悉了能够自己查到很多解决方案(VS的Ctrl+'的快捷键,教程里说可以拉起UnityAPI,我反正两个电脑都没成功)
8.addForce感觉比直接改Tranform.position好用,记得addforce要先GetComponent<Rigidbody>(),给到一个rb对象后,通过rb对象调用addForce方法,参数是Vector3
9.public类型的变量可以直接在unity的inspector中修改,private则不行
10.camera直接拖到player上,居然就能变成第三人称,这个惊艳到我了,还以为第三人称要用复杂的控制摄像机算法,学到了。这种方法有个缺点,就是单位旋转的时候相机会跟着旋转。不知道锁定旋转的话能不能达到想要的效果,写到这里自己去试了一下,发现transform.rotation不能直接赋值,以后研究
11.后来还是用了一个简单的CameraController脚本来控制第三人称相机,先取一个相机和单位间初始的偏移值offset,然后在player运动的过程中,用transform.position保证始终有相机位置=单位位置+偏移量就可以了
12.学相机的过程中,学到了public GameObject类的用法,定义了一个GameObject类的对象以后,Unity中直接把对象拖到Inspector中,直接就创建了引用,很酷炫
13.local模式下,坐标用的是单位的坐标,可能因为旋转,坐标轴也已经转了,不是很方便编辑,转到global模式,就可以用世界的坐标系来处理了,很方便
14.与帧率无关的transform,又在update中,乘以一个Time.deltaTime就可以了,这样不受帧率影响。这样说的话,fixedupdate应该不会有这个问题吧(猜测)
15.从层级hierarchy窗口拖到项目project窗口,就能生成对应的prefab文件了
16.可以新建一个对象,作为父对象,放一堆的子对象
17.处理prefab文件实例化的某个对象时,如果不在inspector窗口中Apply,则只会影响单个实例,不会影响prefab和其他对象
18.教程中的旋转参数是(15,30,45)看不出沿着什么轴转的,挺奇怪的,想要让它沿着平面的方向旋转,研究了好一会儿,才找到参数是(45,45,-45),忘了怎么推导的了,以后可以研究一下
记录本身还是挺好的复习的,不怕繁琐,继续努力。
2018.10.20 2:40