Unity2D游戏开发常用点

Unity下载

unity中国网址:www.Unity.cn

  1. 下载unityHub。
  2. 运行unityHub在Hub中下载unity,版本最好下载Hub推荐的LTS(长期支持版)。
  3. 由于写脚本需要用C#编程语言,安装的时候要选中Vs(电脑中有Vs的可以选择不安装)。
  4. 打开unity需要在Hub中打开。

新建项目,打开unity

1.在项目右上角点击新项目。
2.模板选择2D,给项目起个名字,然后选择项目的存储位置,一定不要勾选启用PlasticSCM,然后点击创建项目。
3.新建项目时间可能会长一些(也看电脑配置),再次打开速度就会快了,大家不用担心。

导入素材

导入素材的方式有两种:
5. 可以选择去unity官方商店去下载自己喜欢的素材,商店的位置在Window–>Asset Store。
6. 如果素材已经下载在电脑上了,可以选择直接导入Asset–>Import Package–>Custom Package。
**注意:**大家导入的素材都会放在Project下的Assets文件夹中。

设置背景

1.在导入的素材中找到自己觉得可以当背景的图片直接拖拽到Hierarchy窗口中,要记得调整素材的像素点,点击素材在Inspector窗口中找到Pixels Per Unit进行调整。
2.可以自己进行绘画,在Hierarchy窗口空白位置 鼠标右键–>2D–>Tilemap(瓦片地图),将绘画素材拖拽到Tile Palette就可以进行绘画,Tile Palette位置:Window–>2D–>Tile Palette。有些素材需要裁剪可以在Inspector窗口将Sprite Mode修改成Multiple,然后点击Sprite Editor在Sprite Editor窗口中Slice即可裁剪。
注意:别忘记调整素材的像素点。

图层Layer

我们绘画背景或者场景的时候可能会出现图层的问题,那么我们就需要对图层进行排序,
在 Inspector窗口中选择Sorting Layer(图层排序)进行排序,觉得缺少图层可以对图层进行添加,图层的名字见名知意就好。
注意:图层越在下面的就越会在前面显示。
假设都在选择同一个图层,可以用改变Order in Layer数字的方式进行显示,数字越大图层就会在前面。

添加游戏角色

在Hierarchy窗口空白位置 鼠标右键–>2D–>Sprite(精灵,可以承载素材中各式各样的东西),添加完在Inspector窗口中会有一个Sprite Renderer(渲染组件),将素材中添加好的角色拖拽到Sprite Renderer的Sprite中。

创建游戏实体

在Inspector窗口中点击Add Component进行添加组件

  1. Rigidbody 2D(刚体):可以将图片变成一个实际的物件,对物体进行重力,摩擦力等设置。
  2. Collider(碰撞体):collider有很多种,可以使游戏角色站立在我们创建的地面上等。
    场景应该添加Tilemap Collider。

角色移动

要想让角色移动起来,就要给角色添加脚本。
在角色的Inspector窗口中点击Add Component进行添加New script组件,这个组件就是角色的脚本(代码)。双击脚本就可以打开Vs进行代码的编辑。
Start() :在游戏开始的时候会运行一次。
Update() :在游戏运行的每一帧都在运行。
FixedUpdate() :是在固定的时间间隔执行,不受游戏帧率的影响。

//获得刚体
public Rigidbody2D rb;
//让角色具有速度
public float speed;

void Start()
{

}
void Update()
{
	//需要调用移动函数让角色可以在每一帧都被调用
	Movement();
}
//可以让角色移动的函数
void Movement()
{
	//a待变-1,d代表-1
	float horizontalmove;
	/*从按键上获取角色的横向移动
	Horizontal只有三个参数-1(左),0(没动),1(右)
	*/
	horizontalmove = Input.GetAixs("Horizontal");
	/*实现角色面向左右,在角色的Inspector窗口的Transform下Scale的x的值
	可以使角色面向左或者是右,当x=-1时角色面向左,当x=1时,角色面向右
	*/
	
	//GetAxisRaw可以直接获得-1或1,GetAixs获得的是从-1到1这个范围
	float facedircetion;
	facedircetion = Input.GetAxisRaw("Horizontal");
	//判断接受的值不是0就代表移动了
	if(horizontalmove != 0)
	{
		//用刚体获得角色移动的速度
		//Vector2 :2d平面上x,y轴的变化
		rb.velocity = new Vector2(horizontalmove * speed , rb.velocity.y);
	}
	if(facedicetion != 0)
	{
		//使transform通过键盘获得-1或1
		transform.localScale = new Vector3(facedircetion , 1 , 1);
	}
}

注意:防止角色旋转需要将角色内刚体的z轴 (Free Rotation z)锁定.
让角色移动的方式还有很多,这个不唯一。

角色跳跃

角色趴下与角色跳跃的方法相似,后面就不对角色趴下进行说明了。

//先给角色增加一个跳跃的力
//与角色移动的写法相同,照葫芦画瓢即可,这个函数也要在Update()函数中调用
public float jumpforce;
void Jump()
{
	if(Input.GetButtondDown("Jump"))
	{
		rb.velocity = new Vector2(rb.velocity.x , jumpforce * Time.daltatime);
	}
}

为角色添加动画效果Animation

为了添加动画效果,我们需要为角色添加一个新的组件Animator(动画)
动画需要一个动画的控制Contronaller。
可以在Assets文件夹空白处右键–>Create—>Animato Contronaller,将Contronaller拖拽到Inspector窗口中的Contronaller中。
打开Window–>Animation–>Animation,在Animation窗口中给角色创建动画效果(动画效果)将素材中每一帧动画的图片拖拽到Animation窗口中将动画调整到自己想要的效果。
我们可以通过这个方法给角色添加很多自己需要的效果,但是需要对Window–>Animation–>Animator进行修改。

/*在代码中声明一个Animator,通过代码来控制不一样的动画的触发时间等
  需要将我们添加的Animator组件拖拽到我们的脚本中。*/
 public Animator anim;
//内容根据设计的游戏进行添加和调用

镜头控制(跟踪)

由于我们设计的是2D游戏,所以需要镜头对角色一直都在跟踪。
1.可以给Main Camera添加一个脚本组件进行控制

//我们要想让镜头可以一直跟踪角色,就要让镜头的x,y的变化与角色的相同。
//获得角色transform的参数
public transform player;
//将角色的transform拖拽到我们声明的参数中
void Update()
{
	//使镜头的位置与角色的位置相等,-10f代表角色本身没有变化的常量,
	//2D游戏在z轴方向上无变化,所以就给一个常量。
	//也可以将y轴改成0,镜头就不会跟随角色在y轴上进行移动
	transform.positon = new Vector3(player.position.x , player.position.y , -10f);
}

2.更好的方法安装Cinemachine(像电影镜头杆一样的插件)
Cinemachine位置:Window—>Package Manager—>Cinemachine
在Cinemachine中添加一个Creat 2D Camera
将需要跟随的角色拖拽到Inspector窗口中的Follow中。
我们也可以对Creat 2D Camera进行设置,这个插件给我们提供了很多好用的功能,
期待你的探索哦!
在2D游戏中我们可能需要地图拥有一个边界,那我们就可以在Inspector窗口中,点击
Add Extension—>CinemachineConfinder添加这个组件,这个组件可以帮助我们找到地图的边界,同时CinemachineConfinder会需要一个2D的collider来确定我们在哪一个范围内移动我们的镜头。因此我们需要给我们的地图场景添加一个Polygon Collider 2D(多边形)点击Edit Collider对多边形进行修改。我们同时需要将Is Trigger勾选上,否则我们的角色将会掉下去。

丰富游戏,添加可收集物品

与添加游戏角色方法相同先添加精灵,再给添加物品进行实例化。
我们也需要给我们添加的物品添加一些动画可以使物品动起来。
我们可以给物品添加一个collider,然后给角色添加脚本碰到物品使物品消失。

在Inspector窗口中我们需要用到Tag给物体添加标签,脚本需要用带Tag

//定义一个整型的变量来记录我们需要收集的物品的数量
public int wupinmingzi;

//如果一个碰撞器2D进入了触发器,就需要调用 OnTriggerEnter2D()
//Collider2D && collision不是一个全局的参数,只能在当前的函数中调用
void OnTriggerEnter2D(Collider2D && collision)
{
	//如果我们的角色碰到物品的标签使我们给物品添加的
	if(collision.tag == "我们给物品添加标签的名称")
	{
		//销毁当前被碰到的物品
		Destory(collision.gameObject);
		//碰撞销毁后物品数量+1
		wupinmingzi += 1;
	}
}

prefab:预制 是最非常用的一种资源类型,是一种可被重复使用的游戏对象。

特点1:它可以被置入多个场景中,也可以在一个场景中多次置入。

特点2:当你在一个场景中增加一个Prefabs,你就实例化了一个Prefabs。

特点3:所有Prefabs实例都是Prefab的克隆,所以如果实在运行中生成对象会有(Clone)的标记。

特点4:只要Prefabs原型发生改变,所有的Prefabs实例都会产生变化。

给角色添加物理材质Physics Material

在Project窗口中Asset文件夹空白处鼠标右键—>Create—>Physics Material 2D
在Inspector窗口中对材质进行摩擦力等的设置,设置完之后将材质拖拽到collider中的Material即可。

给游戏添加UI(用户的界面)

在Hierarchy窗口空白位置 鼠标右键—>UI–>找到自己需要的UI进行添加。
注意:添加UI前必须添加一个画布Canvas,然后在画布的文件夹中添加我们需要的UI组件,在Inspector窗口中对UI进行编辑。

添加敌人

创造敌人的方法与创建角色的方法相同。
我们需要给敌人添加碰撞体,刚体以及脚本来控制敌人自行移动等。

音效Audio

想要让我们的游戏可以有声音效果,首先我们应该有声音素材,声音的素材也可以在Assect Store中进行下载导入。
我们要先添加音源组件Audio Source将音源添加给我们的角色。将我们选择好的素材拖拽 到Inspector窗口中Audio Source里的AudioClip中,我们同时可以对一些功能进行修改,比如Play On Awake(在游戏一开始就播放),Loop(循环播放),还可以对音乐的节奏等进行修改。如果我们想要控制声音什么时候播放,我们一样可以选择用脚本对音乐进行控制。

结尾

本篇文章到此就结束了,如果你是刚刚入门游戏开发的,希望这篇文章对你会有帮助,如果说这篇文章有些看不懂的话,可以去b站搜索M_Studio进行学习,非常好的一个博主,讲解的非常细心,并且很适合初学者。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_细嗅蔷薇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值