从零开始的游戏开发——小狐狸Chapter1.
1.导入素材
打开Unity项目–>Window–>Asset Store–>搜索“Sunny Land”:
添加至我的资源后,打开unity,Window–>My Asset,找到该素材文件后下载,后import到项目中即可;
2.导入背景以及地图创建
1.在素材包中找到背景图片back,将其拖入Hierarchy,在Inspector中将其每单元像素值设置为16(为啥是16?):
2.为了可以通过贴图的方式制作地图,首先需要创建一个2D的Tilemap(瓦片地图)对象:
在Hierarchy中空白地方右键选择2D Object–>Tilemap–>Rectangular,此时场景中就会出现网格线,来承载地图。此时,再通过在Window中找到2D–>Tile Palette,将地图文件加载进去,就可以开始通过画笔来向瓦片地图中贴图了。
3.图层问题
当向Hierarchy中添加素材后发现素材没有显示,也许是图层问题,此时需要我们调整不同图层的位置,保证我们需要看到的素材在最上层:
有如图两中调整图层顺序的方法,第一种方法通过添加图层并选择图层来实现图层顺序的调整:
添加后,在Sorting Layer处就可以选择图层1或图层2,一般来说,选择时下拉菜单越靠下的图层越显示在前面;
而第二种方法是通过给图层赋值,来决定显示的前后,数字越大,越在前;
4.添加小狐狸,并创建脚本控制运动
4.1 添加小狐狸
在素材包中找到小狐狸角色的贴图,在Hierarchy中右键添加2D Object–>Sprites–>Square,然后将小狐狸的素材拖动至监视器的Sprite Renderer的Sprite中,这样就完成了一个角色的添加(拖动之前也需要把小狐狸的每单元像素值改为16)(这里和看的教程不一样,需要选择Sprites的具体形状,不知道形状不同代表什么)
4.2 重力以及碰撞
要完成对创建角色其本身属性的修改,需要在监视器中为其添加Component;
这里为了让小狐狸有更真实的物理效果,首先添加的是Rigidbody 2D(刚体),添加完成后就可以在图示属性处修改其重力属性,此时再运行游戏,小狐狸就能自由落体了。
为了让小狐狸能和地图交互,也即能让其站在地图上,我们现在需要为小狐狸和地图添加碰撞元素:BoxCollider 2D和Tilemap Collider 2D;
在BoxCollider 2D中,点击Edit Conllider来调整元素的碰撞体积大小;
4.3 角色移动
4.3.1 移动
为了通过键盘获取角色移动的指令,并且正确判断指令并作出响应,我们首先需要知道如何获取这个指令,在Edit–>Project setting中Input:
通过其中定义的按键来反映物体的移动。例如水平方向上的左右移动对应Horizontal,可以看出其通过a和d按键来控制左和右:
4.3.2 添加脚本
类似于添加元素的方式,找到New Script,添加后双击:
即可进入VS编辑代码;
为了控制小狐狸的移动,需要在代码层面和小狐狸建立起联系,因此,添加一个刚体对象Rigidbody 2D,保存代码后Untiy的Script元素中会出现rb的刚体对象,之后,将小狐狸的刚体元素拖拽即可完成链接;
编写移动逻辑代码,通过Input.GetAxis(“Horizontal”)获取键盘的输入并映射为whichside的三个值-1,0,1之间的值,再通过刚体的velocity属性来修改,其中Vector2指2D层面的移动,保持y轴不动,进行x轴位置的修改;
void movement()
{
float whichside = Input.GetAxis("Horizontal");
float faceto = Input.GetAxisRaw("Horizontal");
if (whichside != 0)
{
rb.velocity = new Vector2(whichside * xspeed * Time.deltaTime, rb.velocity.y);
}
// 控制朝向
if (faceto != 0)
{
transform.localScale = new Vector3(faceto,1,1);
}
}
最后锁定z轴的旋转来防止小狐狸因为速度过快导致的旋转:
该系列博客是作者在学习油管博主M Studio大佬的小狐狸教程笔记,不为商用,仅为记录以供查阅
教程视频地址为:https://www.youtube.com/watch?v=99FwnTyyDJg&list=PL_Pb2I110MfGAsoqtDs8-6kEU55wU8CnE&index=1