1、Unity 2D Demo制作笔记:基本移动,跳跃,跳跃优化--
一、前言
做这个笔记的初衷是为了记录自己制作Demo时的思路,也是为了当作求职Demo的介绍。
二、制作过程
1、瓦片地图的创建 + 角色的基本设置
首先从Unity资源商店导入瓦片地图和角色资源 ,然后创建瓦片地图,记得要将地面设置成碰撞体。

接着为我们的主角添加碰撞体和刚体,记得要将角色的Z轴翻转禁止(除非你想让你的角色东倒西歪),还有就是角色的碰撞体改成胶囊(Capsule),因为如果是矩形的话会时不时被地形卡住。

可以
2、角色的基本操作
角色的移动分为基本的移动和跳跃,移动的方式有很多种,比如直接用transform进行角色位置上的移动,还有通过角色的刚体组件,直接作用与角色的速度。还有是角色的朝向,我们直接用向量来对角色的Scale进行修改,这样可以省去很多动画的修改。其次这里不过多赘述,直接上关键代码
void Update()
{
//移动
horizontal = Input.GetAxis("Horizontal");//获取输入
playerScale = Input.GetAxisRaw("Horizontal");
Move();
}
void Move()
{
rb.velocity = new Vector2(horizontal * moveSpeed,rb.velocity.y);
if(playerScale != 0) //修改角色朝向
{
rb.transform.localScale = new Vector3(playerScale,1,1);
}
}
接下来是跳跃,我们也是利用角色的刚体组件,直接赋予角色一个向上的力即可,除此之外,我们要添加一个布尔值类型的 isGround ,目的是限制角色的跳跃次数,只有角色的碰到地面时才能刷新跳跃的次数,接着就是角色的跳跃手感优化,如果角色直上直下的话,会显得不那么真实,所以添加一个下坠常数来为角色的下坠进行优化
void Jump()
{
if(isGround && Input.GetKeyDown(KeyCode.Space))
{
rb.AddForce(Vector2.up * jumpSpeed ,ForceMode2D.Impulse);
}
float a = 5 - Mathf.Abs(rb.velocity.y);//通过下坠常数,空中速度快为0时,下坠常数a越大,即越快速 度过这个状态
rb.velocity -= Vector2.up * a * Time.deltaTime;
}
第一章的内容暂且就是这些,接下来的文章内容会逐渐的往2D横板冒险游戏上靠。