如题,在学习unity的过程中,发现可恶的只能在线看视频,网速严重受限的我感觉很是烦恼,快进一下,诶,不动了,过了一会儿。。。黑屏,就能看到刷新的字样
千辛万苦找到可以下载的视频,打开一看,字幕是英文的。。。英文的。。。英文的(为什么说三遍你懂得)
虽然我英文不是很菜。。。基础的都能看懂,但是专业术语看着还是很伤心。。。用翻译又翻译的连亲妈都认不出来
英文版下载链接http://pan.baidu.com/s/1c0DHDs8
所以我就写篇文档,方便随时查看 (又没WiFi了,我现在在用手机流量写这篇博客。。。)
写的有点粗糙加无脑。。。凑活着看吧
Unity space shooter
一
1,save scene
2,拖动飞机模型到场景中并reset,
3,为飞机添加rigidbody组件
4,为飞机添加胶囊触发器 capsule collider,后来又改成mesh collider
5,调整方向direction为z轴
6,添加prefab里的喷射粒子特效
二,
1,调整摄像机 reset
2,x角度为90度,使摄像机朝下,调整y值
3,调整投射为直角orthographic
4,移动飞机位置,采用飞机位于中心点不动,移动camera视角的方法
5,clear flags 设为 solid color
6,create directional light
7, reset
8,rotation x = 20 , y = -115 照射使右边亮
9,光照强度 intensity 调为 0.75 更接近太阳光
10,复制一个光,并命名为fill light ,使其角度照射左边,设intensity为0.15,比右边稍暗
设置color,淡蓝色。。。其实光照这部分复杂而且效果。。。就当学习了
11,Ctrl + shift +n 创建空的gameobject,将两个光移动到里面,方便整理
1,禁用player ,create ,3d object, quad 命名为 BackGround,看不到quad,换到scene场景,调整x角度为90
2,取消 mesh coliider,用不到
3,拖动texture中的背景图到quad(BackGround)中,这是纹理,我们没创建材质(纹理是材质的一部分),unity自动帮我们创建,放在mesh renderer中,创建的纹理默认使用diffue shader(但是我这儿是standard)。。。后面作者换成了specular,即standard。Diffuse属于漫反射,后者属于镜面反射。最后换成unlit texture,不受光照,这时候变亮了
4,图片拉伸,为防止拉伸后失真,要保证图片宽高比不变,竖屏游戏中,宽拉满,高乘比例。X : 15, y : 30。。。。。(先分层,设置不同layer,调整背景层y为负值,使其与飞机分开层)
三
1,为player创建脚本Done_PlayerController
建立FixedUpdate函数,在每个固定物理时间步被调用,放置物理行为代码的地方
2,在函数中编写
public float speed; 速度
float moveHorizontal = Input.GetAxis ("Horizontal"); 水平轴
float moveVertical = Input.GetAxis ("Vertical"); 垂直轴
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
GetComponent<Rigidbody>().velocity = movement * speed;
使飞船可以移动
3,继续编写代码设定飞船可移动范围
[System.Serializable] 序列化(储存并转移信息的一种方法)该类,unity才能显示出来
public class Done_Boundary 另外定义一个共有类,里面的属性可以被其他对象共用
{
public float xMin, xMax, zMin, zMax;
}
在我们的类Done_PlayerController中实例化Done_Boundary
public Done_Boundary boundary;
GetComponent<Rigidbody>().position = new Vector3 定义x,z范围
(
Mathf.Clamp (GetComponent<Rigidbody>().position.x, boundary.xMin, boundary.xMax),
0.0f,
Mathf.Clamp (GetComponent<Rigidbody>().position.z, boundary.zMin, boundary.zMax)
);
保存在unity中调试xMin, xMax, zMin, zMax的值 -6,6,-4,8
4, public float tilt;
GetComponent<Rigidbody>().rotation = Quaternion.Euler (