本文适合初入Unity2D的初学者对简单实现移动和跳跃的手感改良。
方法是从b站up主M_Studio的视频学习而来的(视频链接在文末)。
本文是学习笔记,难免有错漏,欢迎指正!
- Grid -> Tilemap的layer设为Groud;
- 在Player中新建一个Create Empty改名为GroundCheck来检测人物是否接触地面;
- Update和FixedUpdate;
- Update每秒的帧数由电脑性能决定; 而FixedUpdate每秒固定50帧(默认)。
- 因而Input.GetButtonDown()在Update中能实时反馈那一帧的调用。
- 而FixedUpdate在固定时间都会执行调用的方法,更适合Rigidbody的物理效果。
前期代码的准备
private Rigidbody2D rb; //刚体
private Collider2D coll; //碰撞体
private Animator anim; //动画效果
public float speed, jumpForce; //移动速度和跳跃力量
public Transform groundCheck; //地面监测点的位置
public LayerMask ground; //图层layer
public bool isGround, isJump; //两个是否在地面和跳跃的状态
bool jumpPressed; //是否按下跳跃键的状态
int jumpCount; //跳跃的次数
void Start()
{
//以后补充Awake方法内
rb = GetComponent<Rigidbody2D>();
coll = GetComponent<Collider2D>()