Unity 2D 学习笔记:游戏实例Sunnyland
01安装软件&导入素材
1.去unity官网下载软件,地址:https://unity.cn,我用的是2018.4.5版本,Mac版,下载安装完成后,如下图。

2.新建项目,在素材商店中搜索Sunnyland,找到后选择导入import。


02编辑素材&Tilemap
1.首先添加游戏背景,使用像素背景照片是每单元格100像素,这样会使图片显示的非常小,所以先更改每单元像素值为16。


左上角选择按钮
分别对应:选择、移动、旋转、放大缩小、调整边框、其他选择
分别对应快捷键:Q W E R T Y
2.添加unity 2D 常用的功能Tilemap(瓦片地图)

3.tilemap创建好了,那么我们怎么在上面绘画呢,这就要创建我们的tile,选择window->2D->Tile Palette。新建一个文件夹map,放置我们的素材,将tileset素材拖进tile palette,自定义切割方法,16*16,然后就可以用tile palette中的元素在tilemap中绘制场景了。


03图层layer&角色建立
1.需要调整背景和我们绘制的场景会图层顺序,否则会出现覆盖现象。首先选择back背景,在Sprite Renderer中选择Sorting Layer,添加新的layer。
2.如图,我已经创建了两个新的Layer,越在下面显示的Layer就越会出现在场景的前面。这是一种方法。还有一种方法是,比如back和tilemap的图层都是Default,那么可以调整他们的Order in Layer大小,比如1会显示在0的前面。


3.添加游戏角色
方法1:选择Sunnyland-Sprites-player-idle-将他们的单元格像素值改成16,然后拖拽进scene中。(不常用)
方法2:新建一个Sprite,将图片渲染成2D精灵,以拖拽的方式将小狐狸角色图片与其绑定


这里要介绍下add component,添加组件功能,它是使角色进行各种动作的关键。
4.首先为小狐狸添加刚体,然后为小狐狸和陆地添加碰撞体。小狐狸添加碰撞体和tilemap不同。
刚体是指Rigidbody 2D组件,使纸片一样的角色变成实际的物体,拥有物理的效果,如重力、阻力等。
小狐狸使用这个,这个是以一个盒子状的正方形为碰撞面积,可以通过edit collider调整碰撞面积大小。

瓦片地图使用这个,是以瓦片地图的所有像素单元格为碰撞面积。

5.通过以上组件,小狐狸可以成功掉落在地面上了

04角色移动
1.操作游戏需要使用键盘上的按键,玩家可以在Edit-Project Settings-Input-Axes中查看或更改自己的操作按键。使角色移动即获取玩家输入的按键,然后根据按键功能编辑角色对应的移动操作。这里就需要写脚本了。
2.新建组件New Script,使用C#语言,可以建个文件夹专门用来放代码。

3.代码里有两个函数,start()是在游戏开始时运行的代码,update()是游戏在运行过程中每一帧更新变化中都运行的代码。
(1)首先创建两个变量,一个是刚体,一个是速度,command+s保存。
(2)新建一个移动函数,movement(),在update()中调用,获得玩家横向输入的按键结果,用变量horizontalmove保存,当玩家摁下d,其结果等于1,摁下a时等于-1,角色不横向移动时为0。设置刚体的速度变化为矢量值。
(3)将rigidbody 2D中的constraints中的z轴冻结,小狐狸可以移动了。
在游戏运行过程中更改代码或者属性是不会进行保存的,如果想保存更改的调试,可以通过下面操作进行,即复制粘贴组件。

代码:
public class NewBehaviourScript1 : MonoBehaviour
{
public Rigidbody2D rb;
public float speed;
public float jumpforce;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame,不是所有电脑能达到60帧/s的运行速度,fixedupdate可以很好适应不同电脑上的运动效果,使其更加平滑,不跳帧。
void FixedUpdate()
{
Movement();
}
void Movement()
{
float horizonalmove = Input.GetAxis("Horizontal");
float facedirection = Input.GetAxisRaw("Horizontal");
if




最低0.47元/天 解锁文章
1932

被折叠的 条评论
为什么被折叠?



