首页 > 其他分享 >【unity】学习制作2D横板冒险游戏-2-

【unity】学习制作2D横板冒险游戏-2-

时间:2025-01-12 17:00:20浏览次数:1  
标签:动画 横板 冒险游戏 游戏 检测 2D 球体 添加 跳跃

配置新输入系统

升级输入系统

打开设置

更新

安装新系统

给PLayer添加Input组件

创建一个input文件,在如图路径下

里面有一些默认的功能

生成代码

编写人物控制代码

脚本路径如下

新的输入系统的启动代码

如何控制呢?通过检测输入系统中的坐标来控制

左右移动

Fixupdate和update的区别
Update函数在每一帧渲染时都会被调用,其调用频率与游戏的帧率直接相关。
FixUpdate函数的调用频率是固定的,不受游戏帧率的影响。默认情况下,它每秒被调用50次
综上所述,FixUpdate函数主要用于处理物理相关的操作,确保物理行为的稳定性和一致性;而Update函数则更适用于处理与时间无关或不需要精确控制更新频率的游戏逻辑。

反转人物

方法一:通过修改transform的数值

方法二:通过Sprite Renderer组件

我们通过方法一进行反转

人物的跳跃

修改输入系统中的按键

注册事件监听器,用于监听Jump事件的开始

在Awake中注册了一个事件监听器,用于监听跳跃动作的开始。在Awake中注册事件监听器可以确保在对象被创建并准备好接收事件时,它们已经正确连接。

+=:是C#中的事件订阅操作符。它用于将一个事件处理器(在这个例子中是Jump方法)添加到started事件上。这意味着,当started事件被触发时,Jump方法将被自动调用。
即按下控制器的跳跃键,将执行jump方法

一键补全jump方法,并添加如下代码

给rb一个向上的瞬间冲击力

transform是游戏对象的变换组件,包含了对象的位置、旋转和缩放信息。transform.up是一个向量,表示对象上方的方向。

ForceMode2D.Impulse:这是AddForce方法的一个参数,指定了力的模式。ForceMode2D.Impulse表示这个力是一个瞬间的冲量,而不是一个持续的作用力。这通常用于模拟跳跃或快速的冲击力。

调整以下参数,确保手感

现在已经有了一个跳跃的基本雏形

检测地面

transform.position:检测圆心的位置,通常指的是当前角色、物体等的位置。transform 是 Unity 中所有游戏对象都有的一个组件,它包含了游戏对象的位置、旋转和缩放信息。
checkRadius:这是检测圆的半径,决定了检测范围的大小。这个值是一个浮点数(float),表示从圆心出发,向外延伸的距离。
groundLayer:这是一个整数(int),指定了要检测的层(Layer)。在 Unity 中,你可以通过图层(Layers)来组织和管理游戏对象,使得某些游戏对象可以相互交互,而与其他对象隔离。这里,groundLayer 是一个地面的图层编号,代表了你想要检测是否有物体与之重叠的地面。

当Physics2D.OverlapCircle被调用时,它会返回一个 Collider2D 数组,这个数组包含了所有在指定圆形区域内,且属于指定层的物体。如果没有任何物体在这个区域内,它将返回一个空的数组。对于布尔类型的isGround变量来说,任何值都是true,null则是flase

给平台添加layer层

给人物添加layer层

限制跳跃次数

首先要在PLayerController中访问PhysicsCheck组件

加上跳跃限制

绘制检测范围

在场景中我们并不能看到检测的范围

添加变量

位移插值用于对检测圆的调整

绘制监测圆

DrawWireSphere
功能:绘制一个线框球体。这意味着只绘制球体的边缘线条,而不填充内部。
参数:通常包括球体的中心坐标(center)和半径(radius)。
DrawSphere
功能:绘制一个实心3D球体。这意味着球体的内部会被填充颜色。
参数:同样包括球体的中心坐标(center)和半径(radius)。

调整变量使检测处于合适位置

解决摩檫力问题

解决人物在墙壁上会静止不动 的问题

创建物理材质

摩擦力改为零

应用给人物

完成

创建帧动画

添加Animator组件

创建Animation controller,路径如下

应用

添加Animation和Animator两个窗口

添加静止帧动画

添加跑动帧动画

退出时间

退出时间表示当播放当前动画Exit Time%时进入到下一帧动画
比如现在是播放静止58.3%时进入到跑步

过渡时间

过渡时间是指从源动画状态切换到目标动画状态所需的时间。通过设置过渡时间,可以控制动画的切换速度,使其更加自然流畅。
在像素游戏中一般不需要

添加Animation脚本

编辑Animation脚本

通过调用rb和Animator改变velocityX的值,使其完成对移动和静止的转换


完成

跳跃的动画

跳跃动画的阶段

创建跳跃五个阶段的帧动画,添加到混合树中,调整参数如下

编辑代码获得velocity Y的值

状态树编辑

当落地后,我们执行Jump5的状态,并强制执行完(退出时间为1)之后转换为静止状态

在PhysicsCheck中访问isGround变量

现在,如果跳跃按住方向键在下落时会有蹲着跑步的问题,优化状态树

标签:动画,横板,冒险游戏,游戏,检测,2D,球体,添加,跳跃
From: https://www.cnblogs.com/plusu/p/18660807

相关文章

  • 支付宝动物运动会官方API接口,动物运动会官方API接口,动物运动会比赛结果API,运动会API,支
    2025年最热、最火爆的游戏——支付宝动物运动会,正在如火如荼地进行!超强的三方监管机制让得这场赛事达到了公平、公正、公开,三方监管平台分别是:支付宝官方APP、游戏官网 www.zfbgame.com 以及淘宝APP共同携手,确保每一位参与者的权益!支付宝动物运动会是支付宝应用内一项趣味性......
  • 从2D迈向3D:3D技术解锁电商差异化营销新篇章
    随着科技的飞速发展,3D技术已经不再局限于电影、游戏等娱乐领域,而是逐渐渗透到各行各业,其中电商行业便是受益者之一。电商融合3D技术,不仅为用户带来了更加沉浸式的购物体验,更为商家开启了差异化营销的新篇章。从2D到3D的跨越在传统的2D电商平台上,商品通常以图片和文字的形式展......
  • 7.6 2D卷积
    OpenCV的自定义卷积函数在OpenCV中,允许用户自定义卷积核实现卷积操作,使用自定义卷积核实现卷积操作的函数是cv2.filter2D(),其语法格式为:dst=cv2.filter2D(src,ddepth,kernel,anchor,delta,borderType)式中:dst是返回值,表示进行方框滤波后得到的处理......
  • 【unity】学习制作2D横板冒险游戏-1-
    创建项目2D(Built-InRenderPipeline)核心模板为2D游戏开发提供基础架构。配置了适合2D项目的纹理导入、SpritePacker、Scene视图、光照和正交摄像机等设置。3D(Built-InRenderPipeline)核心模板开启3D游戏开发之旅,提供强大的3D场景构建能力。配置了使用Unity内置渲染管......
  • 【S32DS项目实战系列】项目工程外设 之 C40_IP组件
    前言:前面新建了一个工程但是没有任何驱动配置,接下来就教大家配置一下外设驱动的C40_IP1,文件自定义管理在S32DSIDE安装的目录下面的找到一下头文件,并复制到自建的文件夹里面用于自己建立的RTD库当中,当然这个是为了方面进行文件管理2,C40_IP组件简单介绍一下C40_IP组件......
  • 关于Chat2DB的吐槽
    最近心血来潮准备支援原子一波、看着多出来一个选项联合会员chat2db、于是纳闷chat2db是个啥东西于是下载下来试用了一下,怎么说呢、不好评价​ SQL优化功能:一股浓浓的AI味,跟你直接问ChatGpt差不多。​ sql提示也没想象的好、自然语言转sql更是难用、不如直接自己写​ 最后试下......
  • 解释 2D classification of hyperbolic stationary points
    1.问题理解问题是:详细解释在二维动力系统中,双曲不动点是如何进行分类的,包括其定义、类型以及如何根据线性化分析进行分类。2.核心概念二维动力系统:由两个一阶常微分方程(ODEs)组成的系统,形式如下:dx/dt=f(x,y)dy/dt=g(x,y)其中x和y是系统中的两个变量,f和g......
  • 腾讯 StereoCrafter:2D 视频转 3D 视频效果;支付宝推出新 AI 视觉搜索产品「探一下」丨
      开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑......
  • WPF GeneralTransform3DTo2D TransformToAncestor
    //xaml<Windowx:Class="WpfApp113.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mi......
  • WPF ModelVisual3D Viewport2DVisual3D
    <Windowx:Class="WpfApp110.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......