本次Unity的学习将跟随 M_Studio 的“Unity2018教程2D入门“进行学习
1月15日已经观看了该教程的4/30
首先是安装软件和下载素材,与教程不同的是,现在素材商店的SunnyLand不支持2018.5。最低要求为2021.3.12
所以我将教程中的2018.5,在Unity Hub中重新安装成2021.3.16,同时发现这个安装过程中的Visual Studio 2019似乎不能正常安装,需要进行一下科学上网。
在安装好软件,创建好项目之后,会发现界面似乎与教程中有一点点不同,发现教程中的Asset Stroe不在了,
创建项目要注意,不要选择上这个启用版本管理!!!
在菜单中可以找到这个
当点开Asset Stroe会发现
意思就是现在只能在线访问,点击Search online,就可以进入在线商城,搜索SunnyLand进入详情,或者点击这里直达,在登录账号之后,点击添加到我的资源,会弹出一个
接受就好
会出现一个这个
选择在unity内打开,然后就可以看到与教程中一致的import
在导入素材之后,会发现已经有切好的素材,当然也可以尝试自己切一下
而且在你打开Tile Palette(平铺调色板)之后也会看到已经自动切好的素材
布置场景
先将背景拖入场景中,注意将这里的Pixels Per Unit(单位像素数)统一调整成16,该界面是点击资源管理器中的素材进行调整
然后在Hierarchy创建Tilemap,这里和教程中不同的的是,多了很多选择。
我们选择第一个Rectangular(矩形的),其余几个是Hexagonal-Pointed-Top(六角尖顶),Hexagonal-Flat-Top(六角平顶),isometric(翻译是斜的,其实就是菱形),Isometric Z as Y(没看懂。。。)
然后就选择Tile Palette的素材进行场景绘制
就像画画一样简单进行绘制,
图层问题
图层的先后可以有两种调整方式,一种是调整order in layer(也就是同一图层上的顺序)还有Sorting Layer(图层排序?就是不同的图层)
order in layer 在同一图层上,数字越大,越在上面。
Sorting layer可以添加新图层
与以往的认知不同,这个图层越在上面它在屏幕上是越底层。
添加小狐狸
接下来,添加小狐狸,可以直接拖进去,也可以在Hierarchy右键,2D,Sprites
看到有这么多选项,(所以直接拖最好)
Triangle(三角形)Square(方形)Circle(圆形)Capsule(胶囊形)Isometric Diamond(等轴测菱形)Hexagon Flat-Top(平顶六边形)Hexagon Pointed-Top(尖顶六边形)9-Sliced(9切片)
这个小狐狸应该是方形的
将小狐狸的素材拖到sprite一栏
同时,也要注意将Pixels Per Unit(单位像素数)调整成16。
调整图层使小狐狸在最上层
设置碰撞
将小狐狸放好之后,要先让它有一定的物理特性,给小狐狸添加刚体,并赋予重力加速度
选中小狐狸,点击Add Component(添加组件),给小狐狸添加一个RigidBody 2D(刚体2D)
如果这时候点击播放,会发现小狐狸会一直往下掉
这个时候需要添加碰撞盒子,给小狐狸和地图都需要添加
小狐狸选择Add Component,在Physics 2D(2D物理)内有,BoxCollider 2D(2D方形碰撞盒子),默认的碰撞盒子会有一些大,可以点击Edit Collider(碰撞编辑)后面那个按钮去调整碰撞盒子的大小
背景也就是Tilemap,需要选择Tilemap里面的Tilemap Collider 2D(2D瓦片地图碰撞),会自动全部添加,现在小狐狸就不会一直往下掉。
设置行走
设置行走就需要进行C#代码的编写
选中小狐狸,Add Component,New Script,设置一个名字叫做PlayerControl.
然后就是代码
首先创建两个变量,一个用于承接小狐狸的刚体,一个是小狐狸行走的速度
public Rigidbody2D rb;
public float speed;
然后单独创建一个行走的方法void moveMent(){}
这时,2D游戏中行走时靠A或D,左方向键或右方向键来实现的
可以在Edit的Project Setting里有一个Input Manager(输入管理器)里面的这个Axes(轴)内的第一个Horizontal(水平的)就是我们要用到的输入对象,它可以将AD←→,变为一个float的,范围为[-1,1]的数字。
而左右移动其实也就是X坐标的值在变化,也就可以时在RigidBody上施加左右的一个力,去改变它的坐标
为0不动。
那么rb.velocity(刚体的速度) = new Vector2 ( horizontalMove * speed , rb.velocity.y),创建一个新的值,x轴的速度是速度乘以一个float的控制方向的量,y保持原有的不变
然后,将Movement放到void Update(){}内,让它每一帧都在运行这个行走函数。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerControl : MonoBehaviour
{
public Rigidbody2D rb;
public float speed;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
moveMent();
}
void moveMent()
{
float horizontalMove;
horizontalMove = Input.GetAxis("Horizontal");//0是不动,正数向右,负数向左
if (horizontalMove != 0)
{
rb.velocity = new Vector2(horizontalMove * speed, rb.velocity.y);
}
}
}
VS2019代码联想失败的解决办法
1.在Edit的Preferences(偏好设置)内的External Tools(外部工具),有一个External Script Eidter(外部script编辑器),选成vs2019,重启vs即可。
2.如果你的项目选择了PlasticSCM云端托管,会有未知错误,最好的办法是重新建立一个项目。。