《游戏-03_2D-开发》

news2024/11/14 19:29:12

基于《游戏-02_2D-开发》,

继续制作游戏:

首先要做的时切割人物Idle空闲状态下的动画,

在切割之前我们需要创建一个文件夹,用来存放动画控制器AnimatorContoller,

再创建一个人物控制器文件夹用来存放人物控制器,

创建人物动画控制器PlayerAC(PlayerAnimatorController)

为Player添加人物组件Animator

将新建动画器PlayerAC拖拽至组件Animator中,

双击PlayerAC(自定义人物动画控制器)即可打开进行设置,

注意:鼠标中键可以移动 动画框,鼠标滚轮可以放大或缩小,

打开动画时间轴调整 动画时间轴 与 动画控制器的位置,

在动画时间轴中我们可以创建 动画单元Animation Clip

选择存放位置创建文件夹,命名为BlueIdle

将Idle 1-5动画拖拽至 动画时间轴中,

点击开始播放动画可以看到Player抽动,

接下来设置 动画时间轴的时间帧率显示,

将帧率设置为10,运行或者播放动画,人物在Idle就有了动画效果,

接下来创建人物的跑动动画,

存放位置与命名,

可以看到人物跑动是第三排,

 将人物跑动动画拖拽至 动画时间轴 中,

设置跑动的动画帧率,

此时在动画控制器中也会增加了一个人物跑动的动画方框,

创建连线,

点击线会变成蓝色,

注意:在退出时间 为 0.58 代表 动画在播放了百分之58就切换到下一个动画中

我们在这里把退出时间改为1 代表 动画在播放了一次百分之百就切换到下一个动画,

接下来我们创建 转换(连线)变量,

设置线,

创建脚本,

编写代码:

using UnityEngine;
public class PlayerAnimation : MonoBehaviour{
    Animator anim;
    Rigidbody2D rb;
    void Awake(){
        anim = GetComponent<Animator>();        
        rb = GetComponent<Rigidbody2D>();
    }
    void Update(){
        SetAnimation();
    }
    public void SetAnimation() {
        anim.SetFloat("velocityX", Mathf.Abs(rb.velocity.x));
    }
}

注意velocityX是我们在unity动画控制器 转换变量自定义设置的变量,

同样手法做返回Idle空闲的连线,

此时运行项目停止跑动后即停止,

接下来在做走路的动画,

首先创建一个走路动画文件夹,

走路动画在第二张图片,

对第二张图片进行切割设置,

进行切割,

切割好之后留意第二张图0-9就是走路动画,

拖拽至 新建的走路 动画时间轴中,设置帧率为14,

设置线,

以上是通过摇杆 控制人物走路 以及跑步的操作,

接下来稍微改动 动画器 以及 脚本 就可以换成键盘输入控制人物移动以及跑步动画的操作,

首先修改人物动画控制器,

新增bool变量isRun

设置连线,这样设置停止方向键的移动控制没有了速度,人物就会停止,

速度大于0.1 也就是对键盘方向键有水平的操作就会移动让人物进入行走状态,

通过人物由行走到跑步的状态 设置 isRun = true

反之,

修改代码:

using UnityEngine;
public class PlayerAnimation : MonoBehaviour{
    Animator anim;
    Rigidbody2D rb;
    void Awake(){
        anim = GetComponent<Animator>();        
        rb = GetComponent<Rigidbody2D>();
    }
    void Update(){
        SetAnimation();
    }
    public void SetAnimation(){
        anim.SetFloat("velocityX", Mathf.Abs(rb.velocity.x));
        if (Input.GetKeyDown(KeyCode.Q))
            anim.SetBool("isRun", !anim.GetBool("isRun"));
    }
}
即可实现按方向键左/右 进行移动并由Idle动画切换为Walk动画,

按一下Q键,即可切换成跑步准备动画,再按方向键可以实现跑步的移动,

再按一下Q键,即可取消跑步准备动画,

接下来创建人物跳跃动画,

在下图中跳跃分为五个阶段,

我们需要对其修改名字进行区分是哪个阶段,

对前两个进行重命名,

重命名之后保存,

接下来创建这五个阶段跳跃的动画,

以此类推,

五个跳跃阶段分别代表:

我们不希望这五个动画都在Base Layer层级中,将新建的五个动画在Base Layer层级中删除,

接下来创建一个混合树,

重命名为Jump,

双击Jump进入Jump层级,

因为跳跃是对纵向的位移,所以我们需要创建一个float类型的转换变量velocityY

点击velocityY在motion运动下添加动画,

将Jump1-4添加进来,因为Jump5阶段已经着陆,所以在y轴不进行移动,

混合树的velocity变量可以在0-1之间通过数值的转变来切换动画,拖动velocity即可发现,

接下来需要设置这个值来进行切换,我们可以取消勾选进行自己设定值,

如何设定可以在游戏中自行进行跳跃查看其中的变化数值,

可以看出范围大致为-14~14之间,其中最高点大致为0,

即跳跃这个过程的数值变化 (14 减小 0 减小 -14),

即我们可以这样设置数值,

修改代码:

 

using UnityEngine;
public class PlayerAnimation : MonoBehaviour{
    Animator anim;
    Rigidbody2D rb;
    void Awake(){
        anim = GetComponent<Animator>();        
        rb = GetComponent<Rigidbody2D>();
    }
    void Update(){
        SetAnimation();
    }
    public void SetAnimation(){
        anim.SetFloat("velocityX", Mathf.Abs(rb.velocity.x));
        anim.SetFloat("velocityY", rb.velocity.y);
        if (Input.GetKeyDown(KeyCode.Q))
            anim.SetBool("isRun", !anim.GetBool("isRun"));
    }
}
保存代码后,回到Base Layer层级中,

新增bool类型的转换变量,

设置线,

由于我们从 Any State进行连线,在任何状态下有一些额外的选项,

我们在设置时,Can Transition To 这个选项一定要取消勾选,不然进到这里的动画会出不来,

   

我们需要添加Jump5的落地动画与 Idle状态做连接,

设置线,

设置线,这里我们想跳跃动作播放完执行着陆动画,所以设置退出时间为1,

一旦跑步就可以打断跳跃,

修改代码:将实时的true / false 传递给动画控制器的isGround转换变量中,

using UnityEngine;
public class PlayerAnimation : MonoBehaviour{
    Animator anim;
    Rigidbody2D rb;
    PhysicsCheck physicsCheck;
    void Awake(){
        anim = GetComponent<Animator>();        
        rb = GetComponent<Rigidbody2D>();
        physicsCheck = GetComponent<PhysicsCheck>();
    }
    void Update(){
        SetAnimation();
    }
    public void SetAnimation(){
        anim.SetFloat("velocityX", Mathf.Abs(rb.velocity.x));
        anim.SetFloat("velocityY", rb.velocity.y);
        anim.SetBool("isGround",physicsCheck.isGround);
        if (Input.GetKeyDown(KeyCode.Q))
            anim.SetBool("isRun", !anim.GetBool("isRun"));
    }
}
运行即可完成跳跃,

End.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1421553.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

当前的人工智能忽略了人类最具有灵性的心理部分

在人工智能的发展中&#xff0c;目前人工智能的侧重点主要是在物理机理与数理符号计算方面。 物理机理是指人工智能系统对现实世界的感知和交互能力。例如&#xff0c;通过传感器和摄像头等设备获取环境信息&#xff0c;以及利用机器学习和深度学习等技术进行数据分析和模式识别…

pve宿主机更改网络导致没网,pve更改ip

一、问题描述 快过年了&#xff0c;我把那台一直在用的小型服务器&#xff0c;带回去了&#xff0c;导致网络发生了变更&#xff0c;需要对网络进行调整&#xff0c;否则连不上网&#xff0c;我这里改的是宿主机&#xff0c;不是pve虚拟机中的系统。 二、解决方法 pve用的是…

AutoDL----VScode远程ssh连接

1、首先安装ssh插件 首先安装插件&#xff0c;在商店里抖索remote-ssh 2、建立连接 安装完成后在插件栏就会看到远程连接这一栏 点击添加后会让你输入ssh的地址&#xff0c;直接复制AutoDL的&#xff0c;按下Enter&#xff0c;选择第一个配置文件 选择Linux平台 继续后…

8-Docker网络模式之none

1.介绍 Docker none网络模式下,虽然Docker容器拥有自己的Network Namespace,但是Docker容器不会进行任何网络配置,即:Docker容器没有网卡,IP地址等信息,只有lo回环网络。由于这种类型的网络没有办法联网,所以封闭的网络能很好的保证Docker容器的安全性。 2.原理 Dock…

Oracle 面试题 | 02.精选Oracle高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Keepalived + DR 集群

目录 1、Keepalive VRRP 说明 故障切换 工作原理 核心组件 2、Keepalived DR 集群 拓扑规划 前期准备 配置 Httpd 服务 配置 Nginx 服务 配置 LVS 主 node_01 配置 LVS 从 node_02 测试 LVS 集群 测试主备切换 3、Keepalived 脑裂现象 4、Keepalived 心态检测 …

每日一练:LeeCode-404、左叶子之和【二叉树】

本文是力扣LeeCode-404、左叶子之和 学习与理解过程&#xff0c;本文仅做学习之用&#xff0c;对本题感兴趣的小伙伴可以出门左拐LeeCode。 404、 左叶子之和 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 示例 1&#xff1a; 输入: root [3,9,20,null,null,…

Coremail启动鸿蒙原生应用开发,打造全场景邮件办公新体验

1月18日&#xff0c;华为在深圳举行鸿蒙生态千帆启航仪式&#xff0c;Coremail出席仪式并与华为签署鸿蒙合作协议&#xff0c;宣布正式启动鸿蒙原生应用开发。作为首批拥抱鸿蒙的邮件领域伙伴&#xff0c;Coremail的加入标志着鸿蒙生态版图进一步完善。 Coremail是国内自建邮件…

Spring | Spring的“数据库开发“ (Srping JDBC)

目录&#xff1a; Spring JDBC1.Spring JDBC的核心类 ( JdbcTemplate类 )2.Srping JDBC 的配置3.JdbcTemplate类的“常用方法”execute( )&#xff1a;直接执行“sql语句”&#xff0c;没有返回值update( ) &#xff1a;“增删改”&#xff0c;返回 “影响的行数”query( ) : “…

LabVIEW电液伺服控制系统

介绍了如何利用ARM微处理器和LabVIEW软件开发一个高效、精准的电液伺服控制系统。通过结合这两种技术&#xff0c;我们能够提高系统的数字化程度、集成化水平&#xff0c;以及控制精度&#xff0c;从而应对传统电液伺服控制器面临的问题。 该电液伺服控制系统由多个关键部分组…

IDEA:git 回滚本地提交-git 选择 Reset Current Branch to

前言 回滚提交到本地但是还没有 Push 上去的提交 选择我们要回滚的节点&#xff0c;然后点击 git 选择 Reset Current Branch to… 再选择 Hard 。当我们点击 Reset 的时候&#xff0c;代码就会回滚到单前选中的这个版本

Docker 安装篇(CentOS)

Docker社区版 Docker从1.13版本之后采用时间线的方式作为版本号&#xff0c;分为社区版CE和企业版EE。 社区版是免费提供给个人开发者和小型团体使用的&#xff0c;企业版会提供额外的收费服务&#xff0c;比如经过官方测试认证过的基础设施、容器、插件等。 1、Docker 要求 C…

《CSS3》田字网格背景(外实线内虚线)的实现

一、前言 记录一些有趣的CSS实现方式&#xff0c;总所周知&#xff0c;当一段效果可以通过CSS实现的时候&#xff0c;绝不使用Javascript来实现&#xff0c;因此记录一些有意思的CSS效果&#xff0c;一来是方便自己学习&#xff0c;另一来是方便以后在需要使用到的时候能快速找…

聊一聊GPT、文心、通义、混元

我使用同一个Prompt提示词“请以记叙文的文体来写”&#xff0c;分别发送给GPT-3.5&#xff08;调用API&#xff09;、文心、通义、混元&#xff0c;下面是它们各自生成的文本内容&#xff0c;大家一看便知了。 GPT-3.5&#xff1a; 在我个人使用GPT模型的过程中&#xff0c;我…

从零开始 Linux(一):基础介绍与常用指令总结

从零开始 Linux 01. 概念理解 1.1 什么是 Linux&#xff1f; Linux 是一个开源免费的 操作系统&#xff0c;具有很好的稳定性、安全性&#xff0c;且有很强的处理高并发的能力 Linux 的应用场景&#xff1a; 可以在 Linux 下开发项目&#xff0c;比如 JavaEE、大数据、Python…

Typecho独家Joe编辑器Joe博客主题二次开发版

Typecho独家Joe编辑器Joe博客主题二次开发版。因为Joe主题作者不再更新&#xff0c;二开基于原主题 7.3.7 最新版开发。 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/88783800 更多资源下载&#xff1a;关注我。

mini-spring 实现应用上下文,自动识别、资源加载、扩展机制

我们不能让面向 Spring 本身开发的 DefaultListableBeanFactory 服务&#xff0c;直接给予用户使用 DefaultListableBeanFactory、XmlBeanDefinitionReader&#xff0c;是我们在目前 Spring 框架中对于服务功能测试的使用方式&#xff0c;它能很好的体现出 Spring 是如何对 xm…

Postman-接口测试教程

接口是软件开发中常用的概念&#xff0c;是软件生产过程中比较核心的任务。对于接口开发者&#xff0c;调试接口是一件较为繁琐的事情&#xff0c;很多时候需要线上线下来回切换。在这里&#xff0c;我就跟大家介绍一个只需要在本地就可以调试接口的方法&#xff0c;即使用post…

Android 使用高德地图

一、获取高德平台key 【1】基于application包名&sha1值在高德控制台获取key值&#xff0c;详情参考&#xff1a; 获取Key-创建工程-开发指南-Android 地图SDK | 高德地图API 【2】在manifest中声明权限 【3】将拿到的key值在manifest中进行声明 <!--允许程序打开网络…

React-Native跟Android交互--简单示例记录

/** * 使用命令 npx react-nativelatest init DemoRN创建项目 * * "react": "18.2.0", * "react-native": "0.73.2" * * 官网有详细教程&#xff1a;https://reactnative.dev/docs/native-modules-android */ 一、RN invoke androi…