Unity2D横版游戏开发(一) 人物的移动和跳跃

Unity2d-做一个横板动作小游戏 学习视频教程 无邪:cid=112338无邪 教程画个自己的像素人物后续是给这个人物添加动画直接将导出的png图片拖入Unity中,创建一个2d对象把每个导入的动作分割成单独的16*16的图片,多选中多张图片一起拖到对象上,则可給该对象创建动画打开动画窗口 即可看到当前对象的所有动画在动画界面中创建 几个全局变量来控制动画切换。 阅读详情

目录

导入素材

人物移动

人物跳跃 


我使用的Unity版本为2020.3.13f1c1,代码编辑器VSCode 

导入素材

素材均来自https://itch.io/的免费素材

 我选择的是https://rvros.itch.io/animated-pixel-hero素材

导入到Unity后全选人物图片,在右侧的检测器里更改一些参数,然后点击应用 

 修改像素大小为16

过滤模式选择-点(无过滤器),这样可以使图片不会模糊

人物移动

         将adventurer-idle-00(待机图片)拖入到场景内,修改名字为Player

        为Player添加2D刚体和2D碰撞盒

·        

         修改碰撞盒贴合Player即可

          在项目窗口新建一个物理材质,命名为Player,将Friction和Bounciness都设置为0,并将该材质拖入到刚体的物理材质内 ,这样做的原因是不会让人物卡在墙上

代码编写,新建文件夹Scripts,并在其目录新建脚本,命名为 PlayerControl.cs

 双击打开PlayerControl.cs,开始编写移动代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerControl : MonoBehaviour
{
    #region 组件
    private Rigidbody2D rb;//2D刚体
    #endregion

    #region 公开参数

    [Header("移动参数")]
    public float moveSpeed;//人物移动速度
    #endregion

    private void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    private void FixedUpdate()
    {
        Move();
    }

    // 人物移动 和 转向
    private void Move()
    {
        float moveX = Input.GetAxis("Horizontal");
        rb.velocity = new Vector2(moveX * moveSpeed, rb.velocity.y);

        //判断人物的朝向
        if (moveX > 0)
            transform.localScale = new Vector3(1, 1, 1);
        else if (moveX < 0)
            transform.localScale = new Vector3(-1, 1, 1);
    }
}

 返回Unity,测试

测试之前先在场景内放一个物体,并添加碰撞盒,这样让角色站在上面

人物跳跃 

 跳跃代码,在移动代码上添加

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerControl : MonoBehaviour
{
    #region 组件
    private Rigidbody2D rb;
    #endregion

    #region 公开参数

    [Header("移动参数")]
    public float moveSpeed;//人物移动速度
    [Header("跳跃参数")]
    public float jumpForce;//跳跃的力 (及高度)
    public float jumpAddForce;//长按跳跃 增加的高度
    public float jumpTime;//按下跳跃键的时间
    public float jumpStartTime;//初始时间
    public bool isJump;//是否正在跳跃

    [Header("环境检测")]
    public float checkRadius;//检测地面偏移
    public LayerMask whatIsGround;//地面图层
    public Transform feetPos; //地面检测点
    #endregion

    #region 私有参数
    public bool isGround;//是否在地面

    #endregion


    private void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }
    private void Update()
    {
        isGround = Physics2D.OverlapCircle(feetPos.position, checkRadius, whatIsGround);
        Jump();
    }
    private void FixedUpdate()
    {
        Move();
    }

    // 人物移动 和 转向
    private void Move()
    {
        float moveX = Input.GetAxis("Horizontal");
        rb.velocity = new Vector2(moveX * moveSpeed, rb.velocity.y);

        //判断人物的朝向
        if (moveX > 0)
            transform.localScale = new Vector3(1, 1, 1);
        else if (moveX < 0)
            transform.localScale = new Vector3(-1, 1, 1);
    }

    //人物的跳跃
    private void Jump()
    {
        //按下跳跃键
        if (Input.GetKeyDown(KeyCode.Space) && isGround)
        {
            //将跳跃锁定
            isJump = true;
            //跳跃
            rb.velocity = Vector2.up * jumpForce;
            jumpTime = jumpStartTime;
        }
        //长按跳跃键
        if (Input.GetKey(KeyCode.Space) && isJump == true)
        {
            //当长按时间大于零
            if (jumpTime > 0)
            {
                //在长按跳跃这段时间,跳跃
                rb.velocity = Vector2.up * jumpForce;
                //长按时间减去每一帧
                jumpTime -= Time.deltaTime;
            }
        }
        else
        {
            isJump = false;
        }
        if (Input.GetKeyUp(KeyCode.Space))
        {
            isJump = false;
        }
    }
}

哦,对了,刚体记得冻结Z轴,不然人物会倒的

至此人物移动和跳跃就写完了 

Unity2D基础之人物动画、移动、跳跃 阅读详情

相关推荐

用Unity开发一款2D横版游戏demo

通过使用unity引擎,实现一款2D横版游戏demo的开发,特别感谢麦扣老师@M_STDIO,使我对unity有了初步而深刻的了解。

weixin_61056520的博客 9722

unity2D横版游戏教程-1 让人物动起来

unity2D游戏制作相关流程

qq_52905520的博客 5754

【Unity】项目源码——2D横版过关类游戏《A_Standard_Runner》

【摘要】这同样是sunset在学习Unity游戏制作过程中独立制作的游戏,游戏的操作与过关方式比较简单,整体制作时间大概两到三天中除去上课吃饭以及睡觉的剩余时间。虽然也出现了意想不到的小问题,不过整体制作过程中还算比较顺利。这篇博客就来说说如何制作一款这样的游戏的核心部分。

Sunset的博客 2万+

【游戏逆向】老飞飞怀恋魅力爱玩等老飞飞瞬移分析代码

在游戏中,每个人物都有一个坐标。x坐标和y坐标。老飞飞也一样,可能有些朋友用ce找到当前的人物坐标。然后修改坐标就能达到瞬移到效果。不过有些老飞飞是无法实现的。只要瞬移就会掉客户端。今天就揭秘一下不掉客户端的瞬移方法。找瞬移call。用瞬移call实现瞬移的方法。

douluo998的博客 2392

【Unity从零开始制作空洞骑士】①制作人物的移动跳跃转向以及初始的动画制作

事情的起因: 首先我之前在b站的时候突然发现有个大佬说复刻了空洞骑士,点进去一看发现很多场景都福源道非常详细,当时我除了觉得大佬很强的同时也想自己试一下,而且当时对玩家血条设计等都很模糊,就想着问up主,结果因为制作的时间过了很久了,大佬也有些答不上来,于是我就先下来,然后一直跟着其它视频继续学,这几天闲着就试着通过大佬的代码能不能逐步做一个空洞骑士的mod出来,所幸前面的步骤都比较顺利,通过大佬的代码还是能慢慢做出来 (Steam截图镇个楼) 学习目标: 大佬的视频以及Github源..

dangoxiba的博客 1万+

Unity3D 2D游戏开发 ——人物移动及动画调用

Unity 角色移动及动画调用 (1)首先要给 Sprite【游戏角色添加 刚体(Rigidbody2D)和碰撞体(Circle Colloder2D)】 (2)设置好角色的动画以及角色动画控制器里面的参数,这里使用了float 和bool 类型的参数 ,行走的动画调用的是float 类型,待机跳跃下降用的是bool (3)写代码 using System.Collections; using...

螺丝大魔王的博客 4898

ue引擎游戏开发笔记(31)——对角色移动进行优化:角色滑步处理

1.思路:进入混合空间蓝图,找一条腿做参考计算这只脚从落脚到抬脚相对世界的位移,用位移除以时间计算出相对准确的跑动速度,对步行做相同处理,对两速度取最小公倍数并取整,调整混合空间中最大速度即可。这个问题本质是角色的运动速度并没有匹配世界动画的运行速度,不论世界动画快慢于角色移动速度,都会感到有滑步感。角色的移动与动画不匹配,角色移动起来像是在滑行。4.编译运行看效果进行微调。

qq_40128113的博客 1179

【Unity】Jay 开发日志(一)——人物的移动、死亡与平台跳跃

写在最前面:Jay 是我花了五天左右时间开发的同名游戏,基础机制借鉴了涂鸦跳跃,具体的参考视频可以点击以下链接 用周杰伦的第一张专辑Jay做了个游戏(祝杰伦118生日快乐)_单机游戏热门视频 这篇日志将记录如何实现人物的移动、跳跃和死亡。 (一)人物的移动 1) 为了方便后续各种机制的实现,在创建人物时创建一个 empty object,命名为Jay, 挂载 Box Collider 2D(用来检测与平台的碰撞),Rigidbody 2D,Audio Source (用来播放与平台碰撞产生的音效..

u012498719的博客 1017

Unity2D游戏制作入门 | 10 (之人物跳跃动画制作)

这节我们新学了混合树(Blend Tree)、Any State即允许打断之前状态的内容。混合树可以帮助我们实现不同阶段的跳跃动画,而又因为我们设置了人物下落的速度,这样的好处是如果我们直接平台落下,那么它直接执行Jump3的动画,能够跳过前两阶段的动画,省去了我们判断是平台起跳还是掉下去的麻烦,归功于设置了y轴的速度(有师傅带真的香啊不是我说)。好好复习回想一下吧,希望你能再有感悟。

widhejd393的博客 2492

【unity实战】完美的2D横版平台跳跃玩家控制器,使用InputSystem+有限状态机实现人物加速减速 多段跳 长短跳 多段攻击 冲锋 冲锋残影 滑墙 蹬墙跳 滑墙 土狼时间 预输入 攀爬 爬楼梯

【unity实战】使用unity的新输入系统InputSystem+有限状态机设计一个玩家状态机控制——实现玩家的待机 移动 闪避 连击 受击 死亡状态切换这次来实现一个2d平台平台跳跃玩家控制器,平台人物控制要做的好,要考虑的问题会有很多,比如移动加速减速 多段跳 冲锋 冲锋残影 滑墙 蹬墙跳 土狼时间 预输入 攀爬 爬楼梯//减速至于为什么叫这个名字(土狼时间)呢?其实这个名词来自于华纳兄弟动画公司,一部古老的动画系列影片《Looney Tunes》

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 6043

什么是OAuth 2.0?

OAuth2.0是一种授权协议而非登录协议,核心思想是通过令牌(Token)而非密码实现安全授权。它涉及三个关键角色:用户、第三方应用和身份提供商(IdP)。最常用的授权码流程(AuthorizationCode Flow)通过浏览器三方对话,确保用户密码只提供给IdP而非第三方应用。OAuth2.0提供四种授权方式,其中授权码和客户端凭证是当前主流,而隐式和密码模式已不推荐。需要注意的是,OAuth2.0解决的是授权问题,身份认证需通过OpenID Connect实现。该协议通过临时令牌机制,实现了&qu

sonadorje的专栏 1155

Unity2D游戏开发—— 控制主角 左右移动及跳跃 代码

private Rigidbody2D rig; //刚体 private float jumpForce ; //跳跃的力 private float horizontal; //水平偏移量 private float moveSpeed; //水平移动速度绝对值 private float move; //水平移动速度(左 或 右) void Start(){ ri...

凉夏微微 2万+

使用STM32微控制器实现光电传感器的接口和数据处理

本文将介绍如何使用STM32微控制器实现光电传感器的接口和数据处理的方案,包括硬件设计、引脚配置、数据采集、滤波和阈值判断等关键步骤,并给出相应的代码示例。本文将介绍如何使用STM32微控制器实现光电传感器的接口和数据处理的方案,包括硬件设计、引脚配置、数据采集、滤波和阈值判断等关键步骤,并给出相应的代码示例。在光电传感器的接口和数据处理的实现过程中,要关注系统的性能。在使用STM32微控制器实现光电传感器的接口和数据处理之前,需要设计一个合适的硬件平台。

weixin_66608063的博客 3201

Unity2D_角色移动&跳跃

untiy2D角色移动脚本

qq_57689612的博客 2023

PET,CT图像融合笔记

PET-CT怎样进行图像融合?图像融合实现CT与PET图像的融合 OpenCV实现(附实验结果)

chenran187906的博客 8409

Sigrity XtractIM实战:5步搞定IC封装宽带模型提取(附BGA案例)

本文通过一个典型BGA封装案例,详细介绍了使用Cadence Sigrity XtractIM工具进行IC封装宽带模型提取的五步实战流程。内容涵盖从环境准备、参数设置、结果验证到模型导出的完整操作,重点阐述了如何利用XtractIM生成高精度、紧凑的宽带SPICE模型,以解决高速电路设计中因封装模型不准导致的信号与电源完整性问题,助力工程师提升仿真精度与设计效率。

a1b2c的博客 319

Unity2D学习日志(二)人物突进和跳跃

在游戏中输入空格,触发订阅事件执行突进方法:将玩家设置为突进状态,并定时调用停止突进函数。在Translate()方法中识别玩家是否为突进状态,是则将以更快的速度移动玩家实现突进的效果。注意:在移动功能实现中使用了改变刚体的一个方向上的速度即 rb.velocity ,在实现突进功能时如果在同一方向上继续使用AddForce()方法可能会失效。横版2D横版游戏中的移动仅改变了X轴上的速度,跳跃施加的力在Y轴方向,因此不会冲突。3.在原有Translate()方法中稍作修改,识别玩家是否为突进的状态。

weixin_46725797的博客 1288

GT911触摸驱动避坑指南:从寄存器读取到多点触控处理的5个关键步骤详解

本文深入解析了GT911触摸驱动开发中的关键步骤与常见问题。从硬件初始化、I2C通信建立,到核心寄存器操作、缓冲区状态管理,再到配置表烧录与多点触控数据解析,提供了详尽的避坑指南。文章结合STM32等平台的实战代码,重点阐述了驱动调试中的时序、中断处理和坐标映射等核心要点,帮助开发者高效实现稳定可靠的多点触控功能。

weixin_29189363的博客 676

Unity 2d人物移动手感 记录

GetAxis 与 GetAxisRaw 对人物跳跃的手感影响 问题:这两个方法在人物移动、跳跃的时候,究竟有什么区别 目录GetAxis 与 GetAxisRaw 对人物跳跃的手感影响一、方法介绍以及水平移动区别二、跳跃区别总结 一、方法介绍以及水平移动区别 (1)GetAxis() 官方文档:Returns the value of the virtual axis identified by axisName. The value will be in the range -1…1 for ke

weixin_41054345的博客 1323

基于51单片机的校园一卡通系统(仿真)

本次设计利用LCD1604设计可视化界面,矩阵按键执行交互,继电器模拟门的开关,系统集成考勤系统、门禁系统、消费系统、充值系统。同时利用LED灯、蜂鸣器进行指示,方便用户查看状态。

MGT_9796的博客 1549

用Virtuoso和Abstract完成gds2lef

需要用到的工具有virtuoso和abstract。 数模混合的项目通常需要模拟完成模块设计,把接去数字的pin打上label(text),数字的floorplan才能正式开始。 如果只需要简单的数字PR boundary和pin点位置,那么只使用virtuoso就够了,还想把模拟版图都转成lef就要用到abstract工具。 1.PR boundary+pin 1)在virtuoso中打开layout a) Gui操作: Create->P&R Objects->

m0_61544122的博客 8742

Unity2D人物跳跃移动功能

实现在竖版2D中人物的跳跃,二(多)段跳和长按增加跳跃高度,这里我将其一起合并实现了。

WEIWEI6661012的博客 1836

Ubuntu 系统下安装 OpenClaw(原 Clawdbot)的详细指南

Ubuntu 系统下安装 OpenClaw(原 Clawdbot)的详细指南

Science prince的博客 3535

Unity 2D简单的移动和跳跃(可多段)的手感改良,同时使用Update和FixedUpdate

本文适合初入Unity2D的初学者对简单实现移动和跳跃的手感改良。 方法是从b站up主M_Studio的视频学习而来的(视频链接在文末)。 本文是学习笔记,难免有错漏,欢迎指正! Grid -> Tilemap的layer设为Groud; 在Player中新建一个Create Empty改名为GroundCheck来检测人物是否接触地面; Update和FixedUpdate; Updat...

qq_44001490的博客 2615

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Unity做2D小游戏3------创建一个会跳跃的人物角色

打开Tilemap Collider 2D,勾选“Used By Composite” ,Tilemap Collider 2D生成的每个瓦片的碰撞体信息,会被传递给 Composite Collider 2D。例如,在一个由许多瓦片组成的地面 Tilemap 中,未勾选时每个瓦片都有独立碰撞体,勾选后,相邻的瓦片碰撞体会被合并。例如,在一个 2D 平台游戏中,给角色和地面分别添加 Box Collider 2D 组件,角色走到地面上时就能检测到碰撞,从而实现角色站在地面上而不是穿过地面的效果。

Wuuuuuuuppp的博客 1374

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Unity简单2D游戏开发

Unity简单2D游戏开发 前言: 近日比较无聊,在b站找了一个up主,跟着他的教程来做游戏——开发一个简单的2D游戏 用 Tilemap 绘制场景 新建一个2D项目,在Unity Asset Store中搜索下载 “Pixel Adventure”,第一个就是我们需要的 然后我们在window中的package manager中搜索下载一个 Tilemap管理2D 安装完成后,在我们的界面中新建一个Tilemap,并将子物体复制两份,并以此修改...

#的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值