当前位置: 首页 > news >正文

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:下(人物动画)

上个博客我们做出了人物的动画机和人物移动跳跃,接下来我们要做出人物展现出来的动画了

我们接下来就要用到动画机了,双击我们的动画机,进入到这样的页面,我这是已经做好的页面,你们是没有这些箭头的

依次像我一样连接起来,然后点击Parameters,点击name旁边的小箭头,选择 int 类型

之后我们随便选择一条线,点击Conditions的+, 选择如图所示的样子,选择state和Equals

然后就有所不同的:

  • 所有指向Idle的我们的值都设置为0;
  • 所有指向Move的,我们都设置为1;
  • 所有指向Jump的,我们都设置成2;
  • 所有指向Fall的,我们都设置成3。

把Has Exit Time勾选取消掉,就是不勾选,然后展开setting,把Transition Duratior的值都改为0


之后就可以进入我们的代码部分了,把我们之前的C#代码打开,改成这个

using Unity.VisualScripting;
using UnityEngine;public class Move : MonoBehaviour
{// 定义私有变量rb,类型为Rigidbody2D,用于存储刚体组件的引用private Rigidbody2D rb;      // 定义私有变量coll,类型为BoxCollider2D,用于存储碰撞体组件的引用private BoxCollider2D coll;// 定义私有变量anim,类型为Animator,用于存储动画控制器组件的引用private Animator anim;// 定义公共变量JumpSpeed,类型为float,用于存储跳跃速度public float JumpSpeed = 5f;  // 定义公共变量MoveSpeed,类型为float,用于存储移动速度public float MoveSpeed = 5f;  // 定义公共变量Level,类型为float,用于存储水平输入值public float Level = 0f;// 定义私有变量JumpableGround,类型为LayerMask,用于存储可以跳跃的地面层[SerializeField] private LayerMask JumpableGround;// 定义一个名为MoveState的枚举,包含idle(静止)、run(跑步)、jump(跳跃)、fall(下落)四个状态private enum MoveState {idle, run, jump, fall}// Start方法在脚本实例化后、第一帧更新前被调用private void Start(){// 获取并赋值当前GameObject上的Rigidbody2D组件到rb变量rb = GetComponent<Rigidbody2D>();// 获取并赋值当前GameObject上的BoxCollider2D组件到coll变量coll = GetComponent<BoxCollider2D>();// 获取并赋值当前GameObject上的Animator组件到anim变量anim = GetComponent<Animator>();}// Update方法每帧调用一次private void Update(){// 获取水平方向的输入值,不进行平滑处理Level = Input.GetAxisRaw("Horizontal");// 设置角色的水平速度为Level乘以MoveSpeed,垂直速度保持不变rb.velocity = new Vector2(Level * MoveSpeed, rb.velocity.y);// 如果按下跳跃按钮并且角色在地面上if (Input.GetButtonDown("Jump") && IsGround()) {// 设置角色的垂直速度为JumpSpeed,水平速度保持不变rb.velocity = new Vector2(rb.velocity.x, JumpSpeed);}// 调用UpdateStates方法来更新动画状态UpdateStates();}// UpdateStates方法用于更新角色的动画状态private void UpdateStates(){ // 定义一个MoveState类型的变量stateMoveState state;// 根据水平输入值翻转角色if (Level > 0f){// 如果输入值大于0,设置状态为run(跑步),并设置角色不翻转state = MoveState.run;this.gameObject.GetComponent<SpriteRenderer>().flipX = false;}else if (Level < 0f){// 如果输入值小于0,设置状态为run(跑步),并设置角色翻转state = MoveState.run;this.gameObject.GetComponent<SpriteRenderer>().flipX = true;}else{// 如果没有水平输入,设置状态为idle(静止)state = MoveState.idle;}// 根据角色的垂直速度设置跳跃或下落状态if (rb.velocity.y > .1f){// 如果垂直速度大于0.1,设置状态为jump(跳跃)state = MoveState.jump;}else if (rb.velocity.y < -.1f){// 如果垂直速度小于-0.1,设置状态为fall(下落)state = MoveState.fall;}// 使用Animator组件设置名为"state"的整数参数,值为state的枚举整数值anim.SetInteger("state", (int)state);}// IsGround方法用于检测角色是否在地面上private bool IsGround(){// 使用Physics2D.BoxCast方法进行射线投射,检测角色下方是否有可以跳跃的地面层return Physics2D.BoxCast(coll.bounds.center, coll.bounds.size, 0f, Vector2.down, .1f, JumpableGround);}
}

这个代码是我在网上面找的,他用到的IsGroup()很精髓,如果我们不这么做,就需要自己设置IsGroup,之后true和false来回转换,还需要加Unity里面的碰撞体方法进行判断。

这里面就能看到我刚才为什么要让你们设置指向谁的必须是几了。

然后我们保存一下,回到我们的Unity,运行一下就可以看到我们人物的移

动动作和跳起动作了。


如果没有成功跳起来的话:

我们依次点击Tilemap——> Layer——>Add Layer..

添加一个Ground

回到Tilemap,选中Ground

点击Player,选择Move文件,点击Jumpable Ground 切换到Ground,如果这些部分不设置的话,可能我们C#代码里面的IsGround就用不了

最后:运行!

相关文章:

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:下(人物动画)

上个博客我们做出了人物的动画机和人物移动跳跃&#xff0c;接下来我们要做出人物展现出来的动画了 我们接下来就要用到动画机了&#xff0c;双击我们的动画机&#xff0c;进入到这样的页面&#xff0c;我这是已经做好的页面&#xff0c;你们是没有这些箭头的 依次像我一样连接…...

Android 优雅封装Glide

文章目录 Android 优雅封装Glide核心思想定义策略接口定义图片选项实现Glide策略图片管理类使用 Android 优雅封装Glide 核心思想 使用策略模式实现不同图片加载框架的切换&#xff0c;使用建造者设计模式处理不同参数&#xff0c;最后通过 ImageLoader 进行管理。 定义策略…...

智能优化算法-粒子群优化算法(PSO)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1.内容介绍 粒子群优化算法 (Particle Swarm Optimization, PSO) 是一种基于群体智能的元启发式优化算法&#xff0c;由Kennedy和Eberhart于1995年提出。PSO模拟了鸟群或鱼群的觅食行为&#xff0c;通过粒子之间的相互作用…...

vue系统获取授权平台授权码实现单点登录、注销功能

公司平台需要对接别的平台 实现单点登录 注销。简而言之&#xff0c;不需要在自己公司系统登录 统一在别的平台登录后获取到登录凭证&#xff08;授权码&#xff09; 在本公司系统实现免密登录的功能。 流程&#xff1a; 跳转授权页面和保存授权码的代码&#xff1a; hrefLog…...

Java之枚举

目录 枚举 引入 定义 代码示例 常用方法 代码示例 枚举的优缺点 枚举和反射 面试题 枚举 引入 枚举是在JDK1.5以后引入的。主要用途是&#xff1a;将一组常量组织起来&#xff0c;在这之前表示一组常量通常使用定义常量的方式&#xff1a; publicstaticintfinalRED1;…...

八、适配器模式

适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许不兼容的接口之间进行合作。适配器模式通过创建一个适配器类来转换一个接口的接口&#xff0c;使得原本由于接口不兼容无法一起工作的类可以一起工作。 主要组成部分&#xff1a; 目标…...

关于E-R图

一 什么是E-R图 E-R图&#xff08;Entity-Relationship Diagram&#xff09;是一种数据建模工具&#xff0c;用于描述数据库中实体之间的关系。它使用实体&#xff08;Entity&#xff09;、属性&#xff08;Attribute&#xff09;和关系&#xff08;Relationship&#…...

DVWA通关教程

Brute Force Low 先进行一下代码审计 <?php // 检查是否通过GET请求传递了Login参数&#xff08;注意&#xff1a;这里应该是username或类似的&#xff0c;但代码逻辑有误&#xff09; if( isset( $_GET[ Login ] ) ) { // 从GET请求中获取用户名 $user $_GET[ us…...

网络学习-eNSP配置VRRP

虚拟路由冗余协议(Virtual Router Redundancy Protocol&#xff0c;简称VRRP) VRRP广泛应用在边缘网络中&#xff0c;是一种路由冗余协议&#xff0c;它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱&#xff0c;允许主机使用单路由器&#xff0c;以及即使在实际…...

Kafka【九】如何实现数据的幂等性操作

为了解决Kafka传输数据时&#xff0c;所产生的数据重复和乱序问题&#xff0c;Kafka引入了幂等性操作&#xff0c;所谓的幂等性&#xff0c;就是Producer同样的一条数据&#xff0c;无论向Kafka发送多少次&#xff0c;kafka都只会存储一条。注意&#xff0c;这里的同样的一条数…...

JavaScript知识点1

目录 1.JavaScript中常用的数组方法有哪些&#xff1f; 2.JavaScript的同源策略&#xff1f; 3.JavaScript中的 NaN 是什么&#xff1f; 4.JavaScript中的split、slice、splice函数区别&#xff1f; 1.JavaScript中常用的数组方法有哪些&#xff1f; 在 JavaScript 中&…...

51单片机个人学习笔记11(AT24C02-I2C总线)

前言 本篇文章属于STC89C52单片机&#xff08;以下简称单片机&#xff09;的学习笔记&#xff0c;来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记&#xff0c;只能做参考&#xff0c;细节方面建议观看视频&#xff0c;肯定受益匪浅。 [1-1] 课程简介_哔哩…...

创建Java项目,可实现main方法运行,实现对性能数据的处理

1、Android Studio无法执行Java类的main方法问题及解决方法 Android Studio无法执行Java类的main方法问题及解决方法_delegatedbuild-CSDN博客 D:\workspaces\performanceTools\.idea 文件夹下&#xff0c;gardle.xml ,添加依赖 <option name"delegatedBuild"…...

JavaWeb(后端)

MVC MVC 就是 Model View Controller 的缩写&#xff0c;属于一种软件架构设计模式一种思想&#xff0c;把我们的项目分为控制器&#xff08;Controller&#xff09;、模型&#xff08;Model&#xff09;、视图&#xff08;view&#xff09;三个部分&#xff0c;model就是处理…...

828华为云征文 | 华为云Flexusx实例,高效部署Servas书签管理工具的优选平台

前言 华为云Flexus X实例&#xff0c;Servas书签管理工具部署的优选平台&#xff01;828节日特惠&#xff0c;让高效管理您的知识宝藏触手可及。Flexus X实例以其卓越的算力、灵活的资源配置和智能调优技术&#xff0c;为Servas提供了稳定、高效的运行环境。无论是快速访问、安…...

分治法和动态规划法

一、分治法&#xff08;Divide and Conquer&#xff09; 定义 分治法是一种将大问题分解成若干个小问题&#xff0c;递归地解决这些小问题&#xff0c;然后将这些小问题的解合并起来得到原问题的解的算法策略。&#xff08;子问题之间相互独立&#xff09; 基本步骤 1.分解…...

【FreeRL】我的深度学习库构建思想

文章目录 前言参考python环境效果已复现结果 综述DQN.py&#xff08;主要&#xff09;算法实现参数修改细节实现显示训练&#xff0c;保存训练 Buffer.pyevaluate.pylearning_curves 前言 代码实现在:https://github.com/wild-firefox/FreeRL 欢迎star 参考 动手学强化学习e…...

Docker部署nginx容器无法访问80端口

问题说明 在阿里云ECS服务器上部署一台CentOS服务器&#xff0c;然后在里面安装了docker服务。用docker部署了nginx&#xff0c;开启docker中的nginx服务&#xff0c;映射宿主机端口80 把阿里云服务器上面的安全组放开了80端口 但是还是无法访问nginx的80web界面 问题分析 查…...

Python语言开发学习之使用Python预测天气

什么是wttr&#xff1f; 使用Python预测天气的第一步&#xff0c;我们要了解wttr是什么。wttr.in是一个面向控制台的天气预报服务&#xff0c;它支持各种信息表示方法&#xff0c;如面向终端的ANSI序列(用于控制台HTTP客户端(curl、httpie或wget))、HTML(用于web浏览器)或PNG(…...

minio实现大文件断点续传

最近工作中遇到一个需求&#xff0c;用户需要上传大文件几百M&#xff0c;为了更好的用户体验&#xff0c;需要支持断点续传&#xff0c;秒传&#xff0c;上传进度条等功能。需求如下&#xff1a; 方案有两种&#xff1a; 第一种&#xff1a;前端直接将整个大文件丢到后端&…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...