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

配置新输入系统

升级输入系统

打开设置

更新

安装新系统

给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变量

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

posted @   plusu  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示