项目01《游戏-03-开发》Unity2D

2024-02-01 05:20
文章标签 项目 开发 游戏 01 03 unity2d

本文主要是介绍项目01《游戏-03-开发》Unity2D,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基于      项目01《游戏-02-开发》Unity2D      ,

继续制作游戏:

首先要做的时切割人物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.

这篇关于项目01《游戏-03-开发》Unity2D的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/666198

相关文章

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结

Spring Boot项目如何使用外部application.yml配置文件启动JAR包

《SpringBoot项目如何使用外部application.yml配置文件启动JAR包》文章介绍了SpringBoot项目通过指定外部application.yml配置文件启动JAR包的方法,包括... 目录Spring Boot项目中使用外部application.yml配置文件启动JAR包一、基本原理

Springboot项目登录校验功能实现

《Springboot项目登录校验功能实现》本文介绍了Web登录校验的重要性,对比了Cookie、Session和JWT三种会话技术,分析其优缺点,并讲解了过滤器与拦截器的统一拦截方案,推荐使用JWT... 目录引言一、登录校验的基本概念二、HTTP协议的无状态性三、会话跟android踪技术1. Cook

springboot项目中集成shiro+jwt完整实例代码

《springboot项目中集成shiro+jwt完整实例代码》本文详细介绍如何在项目中集成Shiro和JWT,实现用户登录校验、token携带及接口权限管理,涉及自定义Realm、ModularRe... 目录简介目的需要的jar集成过程1.配置shiro2.创建自定义Realm2.1 LoginReal

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配