毕设开发日记第一阶段

news/2024/11/14 13:25:51/文章来源:https://www.cnblogs.com/nashacjj/p/18394156

第一阶段完成任务其实很简单,但是因为是第一次使用Unity,美术方面也可以说是零基础,我还是花费了好几天的时间在第一阶段的开发上面。

首先我确定是做一个2D的人物移动自由世界的游戏,所以我这边采用Unity作为游戏开发引擎,aseprite作为美术开发工具。

人物动画我刚开始尝试自己制作,也找了一些教程但最后由于门槛太高还是放弃了,我这边采用的素材是从itch.io网站上下载的,这个网站里大多数素材都是可以免费商用的,质量也很高(比我自己画强太多了)。但是如果有些地方我认为可以做一些休整来适合我的游戏,我会选择用aseprite软件来做一点修改,这是一款非常好用的像素绘画工具,甚至不需要数位板,每个像素都可以用鼠标一个个点出来,该软件在steam上售价10$,也就是70¥,有条件的小伙伴可以支持一下正版,没有条件又想尝试一下的可以去B站搜索破解版[Aseprite白嫖+汉化教程]安装包在评论区(官网已开源)_哔哩哔哩_bilibili,这是我在22年看的教程,类似还有很多大家自行搜索。

有了素材之后还要让人物动起来,Unity的脚本运行是用的CSharp(C#)代码,我个人感觉其实和C差不多,暂时还没有遇到什么语法方面的问题,可以勉强写一点人物移动的代码,但是难点在于人物移动时动画的切换。这边要提到一个组件叫做Animator,它里边采用的状态机机制,使得各个动画之间能够随意切换,切换条件也可以由制作者自行设定和更改,见下图。

 以上面这张图片为例,我们人物初始状态为idle,也就是Entry指向的第一个状态,英文翻译是闲置,没错闲置我们也有专属的动画,然后就是中间蓝色的这个Any State,它可以让我们从当前的idle状态随意切换到其他任意一个状态上去,向前跑向后跑,向左向右都可以。看似非常简单(我一开始也是这么认为的),但是我们需要用C#代码来控制它的底层逻辑,因为我在制作过程中遇到了许多困难,比如跑动时动画会与我实际操作时有出入,假设当我按下D键时,人物会向右跑动,同时播放向右跑动的动画,然而当我同时按下D和S键时,跑动动画就出问题了。当我松开S键时,人物会转换成闲置状态,并且继续移动,这是为什么呢?因为我最初的代码逻辑是,当WASD任意一键弹起时,动画变会转换成闲置状态,那么我当我们在同时按下D和S时,人物会播放跑动动画,但是如果继续保持D键按下,S键松开时,人物会保持向右移动,但是动画状态就回到闲置状态而非保持原来的跑动状态,这是我遇到的第一个问题。那么该怎么解决呢?我最初的修改方式是设置一个isNotRunning的参数,来判断人物是否在跑动,如果正在跑动那么就不要改变目前的状态,而当键盘上所有按键弹起时再回到idle状态。然而这还没结束,又出现了一个新的问题,我们现在松开S键,保持D键按下,人物会保持向下跑动的状态向右移动,这个问题其实也很简单就能解决,但是奈何我不了解Animator中的一些对象拥有的功能,GetKeyDown方法是当前帧按下某一按键时返回真值,而还有GetKey方法,它返回真值的条件是当前某一按键被按下,那么我们只需要遍历所有的按键来判断是否所有按键都弹起,封装到一个AllKeyReleased方法中去,这样当没有任何按键按下时我们再去切换动画才会回到闲置状态。至此基本问题都已经解决了,但是操作起来的手感还是有点问题,因为对Animator组件的不熟悉,我在网上碰了很多壁终于让我发现一个参数,混合动画时间,这是Animator自带的一个参数,可以让动画从一个状态到另一个状态改变时有一个缓冲时间,以至于动画不会随着我们按键的按下立即切换,只需把参数调整为0即可解决。

我还想再写一点东西,但是我要去吃饭了,太饿了想不起来写什么了,等我记起来我在第二阶段再行补充(*'▽'*)♪

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,…

【日记】领导和领导之间差距还挺大(1223 字)

正文今天属实体验到了一波领导和领导之间的差距。7,8,9,10 号公休,今天省分行突然发通知,说信贷人员上岗资格考试 9.7 号下午考。我上午 10:30 从成都飞哈尔滨的机票。假条都批了。我跑去跟副行长汇报,副行长直接跟我说,那你能克服的还是克服一下,改签吧,考完再去公休。我…

2024Hvv漏洞汇总(128个POC)

2024年9月3日 Hvv情报搜集,漏洞合集全部都有POC(128个POC),可成功复现。2024Hvv漏洞整理(128个POC) ​(网上漏洞零零散散)下面是收集到的且有POC的漏洞整理合集,鄙人分了三种格式供各位提取,下面贴上目录与图片,由于字数有点大,各位请移步网盘自行提取。按照Hvv时间…

Spring boot 2.x集成swagger

1、官方文档2、历史版本安装 如果使用的不是最新的spring boot版本,则进入红框链接,打开历史版本列表。图片中也说明了springdoc-openapi v1.8.0 is the latest Open Source release supporting Spring Boot 2.x and 1.x.3、2.x版本文档 https://springdoc.org/v1/

初赛模拟题一

初赛模拟题一 T1 (C++ %)C++ "%" 的规则 \[a \% b = c \]\[c = a - \lfloor \frac{a}{b} \rfloor * b \]\(\lfloor \rfloor\) 的规则: 向 0 取整, 如 \((-9) / 5 = -1\),\(9 / 5 = 1\)T3 (GDB)GDB 全称“GNU symbolic debugger”,从名称上不难看出,它诞生于 GNU…

地理围栏,打造智能生活新边界

随着智能手机和其他移动设备的普及,用户对基于位置获取个性化服务的需求大幅增加,例如用户进入商圈范围并停留操作一段时间后,智能触发向用户推送该商圈吃、喝、玩、乐的优惠活动消息;又如当用户到达非常驻地的机场时触发围栏,向用户推送询问是否需要预定机场附近的酒店的…

K8s使用cephfs(静态和动态两种)

一、K8s节点安装 ceph-common CephFS是 Ceph 中基于RADOS(可扩展分布式对象存储)构建,通过将文件数据划分为对象并分布到集群中的多个存储节点上来实现高可用性和可扩展性。 首先所有 k8s 节点都需要安装 ceph-common 工具: yum -y install epel-release ceph-common二、静…

Vue3+NestJS+Vite4+TS4+Mysql8+Nginx全栈开发企业级管理后台

Vue3+NestJS+Vite4+TS4+Mysql8+Nginx全栈开发企业级管理后台vite打包快的原因:冷启动1.esbuild构建依赖,go语言编写多线程打包。2.原生的esm方式提供源码,浏览器分担了一部分工作。 HMR热更新1.缓存机制,利用浏览器http头部,源码模块请求根据304协商缓存和依赖模块请求通过…

CUDA常见驱动程序兼容性问题一览

CUDA常见驱动程序兼容性问题一览关注TechLead,复旦博士,分享云服务领域全维度开发技术。拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,复旦机器人智能实验室成员,国家级大学生赛事评审专家,发表多篇SCI核心期刊学术论文,阿里云认证的资深架构师,上亿营收AI产…

Vue3+TypeScript+Vite+Pinia+ElementPlus开发项目在线医疗服务平台

Vue3+TypeScript+Vite+Pinia+ElementPlus开发项目在线医疗服务平台 前言 随着vue3.0的越来越受欢迎,开始有许多公司和个人开始学习并使用vue3开发项目。我从接触学习并使用vue2,到现在的vue3,工作中也一直在使用vue。vue3也发布很长时间了,目前vue3+vite+ts再结合一些优秀…