欢迎光临散文网 会员登陆 & 注册

1、Unity 2D Demo制作笔记:基本移动,跳跃,跳跃优化--

2023-07-31 01:39 作者:M0mentD  | 我要投稿

   一、前言

        做这个笔记的初衷是为了记录自己制作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横板冒险游戏上靠。

1、Unity 2D Demo制作笔记:基本移动,跳跃,跳跃优化--的评论 (共 条)

分享到微博请遵守国家法律