Ruby2D总结

news2024/12/23 18:44:02

Ruby学习心得

学了几天,Ruby2D这个项目我差不多把教程里面的东西做完了,感觉还好,只要每天一有空的话就去做的话就可以快速做好一个项目,不过还是会有一点虚浮感,但学习也是一个不能拖的事情,所以为了平衡速度与效率,我接下来将开始写这个小游戏的总结来巩固自己的知识

大体总结

Ruby2D我认为主要分为一下几个部分:
1、地图的绘制,Tilemap等工具的应用,以及2Dcamera下角色的显示,图层的遮盖关系问题。
2、Ruby的动作,enemy的运动设置,发射飞弹、碰撞检测等等行为逻辑的运动,以及是否贴合现实世界,不会显出一种诡异感
3、动画的控制,这里的Ruby的运动轨迹没有采用骨骼动画来处理,而是对于每个动作都画了四帧图片,通过动画混合树监听行动方向来处理Ruby的动作变化
4、UI血条的处理、camera跟随以及UI血条的制作,再加上音效的控制

1、地图绘制与图层遮罩关系

这里我们主要使用的是Tilemap来绘制地图
在这里插入图片描述
在这里插入图片描述
创建好后点开可以直接拿里面的图片开画,还有RuleTile等一系列功能我认为其实没有太大必要,这种只能瓦片对初学者很不友好,而且我认为这是美工该干的活,主程我们只要会切割瓦片就行了
将sprite mode改成从single(单一的)改成Multiple(多个的)然后sprite Editor->slice(切割)把上面两个参数改成3
在这里插入图片描述
像这样
这样就可以了,我们切割好图片只要打开Tilemap就可以随心所欲编辑了
至于图层的遮罩问题
我们需要设置一个东西
Transprency sort Axis设置为(0,1,0)
排序顺序按Y轴排序,这是一个优先级的关系
官方描述是:描述方向的轴,将沿此方向测量对象距离,从而进行排序。
我认为这就是告诉你按Y轴排序就完事了,假如是X轴就把X设为1,假如要混合的话就1,2,3,灵活随机应变调参数就行。
这里我们调整一下锚点和渲染器就行

2、Ruby的动作,发射飞弹,enemy的代码描写

这里是比较多也是比较重要的地方,逻辑上也容易搞混,所以这里代码的工整与规范需要注意
这里我已经写了三篇博客了,我就不多说了,确实有点多,写总结是巩固记忆不是给自己添堵我就贴个链接好了
https://blog.csdn.net/qq_63499305/article/details/130081269?spm=1001.2014.3001.5501//这里是飞弹
https://blog.csdn.net/qq_63499305/article/details/130052354//这里是enemy控制
https://blog.csdn.net/qq_63499305/article/details/129958273//这里是Ruby控制
不过有几个点值得记录
一是里面用到的几个api
还是很好用的
GetComponent<>();//获取组件,基础中的基础
Input.GetAxis(“horizontal/vertical”);//一般用来获取水平或垂直输入
Input.GetKeyDown(KeyCode.C);//获取键盘输入,这里的C可以替换成键盘上的其他按键
component.SetActive(true);相当于开关,是否让这个组件处于开启或关闭状态
rigidbody2d.velocity;//获取刚体的速度
Vector2.magnitude;//获取向量长度
Vector2.MoveTowards(vel, Vector2.zero, faccel * dt);第一个参数是当前向量,第二个是目标值,第三个参数是每一次靠近的长度,还是很好用的,上面这个是我程序上copy下来的,算是示例
Animator.SetFloat(“MoveX”,1);//这里控制动画,float可以改成trigger之类的数据类型注意格式
currentHealth = Mathf.Clamp(currentHealth + amount, 0, maxHealth);这个是将一个值限制在一个范围内,好用

    GameObject projectileObject = Instantiate(projectilePrefab, rb2d.position + Vector2.up *
    0.5f, Quaternion.identity);

创建一个游戏对象,projectilePrefab需要先创建一个gameobject变量再挂载在我们的游戏对象上
audioSource.PlayOneShot(clip);//播放音乐
Destroy(gameObject);//删除自己
rigidbody2d.simulated = false;//将该刚体从物理系统中删除(可恢复)
mask.rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, mask.rectTransform.rect.width * value);//设置mask遮罩长度
就这么多了

3、动画控制

这里我发的博客也挺详细了
https://blog.csdn.net/qq_63499305/article/details/130052354?spm=1001.2014.3001.5502
再过多赘述显得啰嗦

4、camera跟随以及UI血条处理

血条我也有发博客,不得不说实时记录还是爽啊,到这种总结的时候省了好多活
https://blog.csdn.net/qq_63499305/article/details/130116201?spm=1001.2014.3001.5502
不过我试了一下,在不同分辨率下,我们的摄像机高度似乎是不一样的,这会导致我们在有些分辨率下UI血条显示不出来的问题,原因是Canvas画布大小的变化问题
经过查找,我找到了解决方案
在这里插入图片描述
UIScaleMode:UI尺寸变化方法
withScreen:随着屏幕变化而变化
这样设置就行了
注意点差不多就这样了

5、最后(小感悟)

听天命地前一句是尽人事,尽人事以后才应该听天命,首先把握好自己能做到地界限在哪里吧。

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

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

相关文章

【SpringBoot2】SpringBoot运维实用篇

SpringBoot运维实用篇 YW-1.SpringBoot程序的打包与运行 ​ 刚开始做开发学习的小伙伴可能在有一个知识上面有错误的认知&#xff0c;我们天天写程序是在Idea下写的&#xff0c;运行也是在Idea下运行的。 ​ 但是实际开发完成后&#xff0c;我们的项目是不可能运行在自己的电…

Java——树的子结构

题目链接 牛客在线oj题——树的子结构 题目描述 输入两棵二叉树A&#xff0c;B&#xff0c;判断B是不是A的子结构。&#xff08;我们约定空树不是任意一个树的子结构&#xff09; 假如给定A为{8,8,7,9,2,#,#,#,#,4,7}&#xff0c;B为{8,9,2}&#xff0c;2个树的结构如下&am…

【C++】引用(上)【深度全面解析】

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…

stm32cubemx IAP升级(三)

stm32cubemx IAP升级- UARTDMA实现不定长收发数据 板卡&#xff1a;Nucleo-L412 平台&#xff1a;macbook pro 工具&#xff1a;vscode stm32cubemx stm32cubeProgramer cmake toolchain Stm32CubeMx的配置 选择开启一路串口并配置成DMA&#xff0c;并使能中断&#xff0c;配…

优思学院|质量改进必备技能:克罗斯比的14步骤全面解析

菲利普克罗斯比&#xff08;Philip Crosby&#xff09;是一位著名的质量管理专家&#xff0c;被誉为"零缺陷之父"、“现代质量运动之父”。他于1926年出生于美国俄亥俄州&#xff0c;曾在美国空军服役。后来他在ITT公司和马丁-马里埃塔公司等企业担任质量管理师和高级…

【pycharm】pycharm配置svn

目录 1、配置svn地址 2、配置svn按钮 3、配置svn地址 4、checkout项目到PycharmProjects 5、使用 6、打开项目或者checkout项目 7、配置虚拟环境 8、虚拟环境安装库 1、配置svn地址 Seting-version control-subversion 找不到svn.exe 点我博文 2、配置svn按钮 VCS--…

C语言课设项目-51单片机-独立按键与矩阵按键

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 一、独立按键 1.按键介绍 2.独立按键原理 3.编写独立按键控制程序 二、矩阵按键 1.矩阵按键的由来 2.…

《暮色心迹》开机大吉,在上虞上演一场蓄谋已久的爱情对弈

4月15日&#xff0c;由秀合影视&#xff08;浙江&#xff09; 有限公司、辰耀影业文化传媒&#xff08;北京&#xff09;有限公司、浙江中创华视文化发展有限公司出品&#xff0c;浙江诺然文化传媒有限公司、北京幻想纵横网络技术有限公司、浙江知马影视服务有限公司、浙江沐阳…

最落魄的时候,身上带着《毛选》

最落魄的时候&#xff0c;包里只带《毛选》的腕儿 史玉柱&#xff1a;营销大咖&#xff0c;早年创业起伏大 东山再起的腕儿 趣讲大白话&#xff1a;成功是用心血浇灌的 【趣讲信息科技133期】 **************************** 90%的企业是销售驱动型 所以要把品牌和营销的事搞透彻…

Buyflag

拿到题目可以获取到几条关键提示如果你想要买flag你必须是CUIT的学生你必须回答正确的密码查看源码也发现有php源码提示信息要求通过POST方式传参&#xff0c;并利用isset检测是否有password字段is_numeric是检测password字段是否为数字或者数字字符串&#xff0c;如果为数字则…

集合,Collection接口,Iterator(迭代器),List接口和方法,ArrayList底层结构和源码分析

数组的不足 长度开始必须指定&#xff0c;而且一旦指定&#xff0c;不能修改保存的必须为同一类型的元素使用数组进行增加/删除元素的示意代码麻烦SuppressWarnings({"all"})抑制警告集合 可以动态保存任意多个对象&#xff0c;使用比较方便提供了一系列方便的操作对…

【零基础学习】Javascript 快速入门(完整篇)简单、适合初学者

【零基础学习】Javascript 快速入门前言&#xff1a;如何解决错误提示&#xff08;Error&#xff09;Uncaught TypeError: Cannot set properties of null (setting innerHTML)Uncaught ReferenceError: displayDate is not defined at HTMLButtonElement.onclick安装Visual St…

剪枝与重参第八课:ACNet、DBB、RepVGG重参

目录ACNet、DBB、RepVGG重参前言1. 并行多分支结构1.1. 并行多分支结构 Demo2. ACNet2.1 ACNet简述2.2 init2.3 forward2.4 swtich to deploy2.5 get_equivalent_kernel_bias2.6 Conv2d与BN的融合(重参)2.7 Conv1x3Conv3x1Conv3x3的融合(重参)2.8 模型导出2.9 完整示例代码总结…

【电路理论】KCL、KVL、线性直流电路各大方法、定理详解

博主简介&#xff1a;努力学习的22级计科生一枚~博主主页&#xff1a; 是瑶瑶子啦所属专栏: 电路理论 目录一、KCL、KVL定律1.1&#xff1a;KCL1.2&#xff1a;KVL1.3&#xff1a;总结二、线性直流电路2.1&#xff1a;电阻网络等效变换2.1.1&#xff1a;电阻等效——三角&星…

【Flink】Flink基础

Flink 官网地址 &#xff08;官网介绍的非常详细&#xff0c;觉得看英文太慢的直接使用浏览器一键翻译&#xff0c;本文是阅读官方文档后进行的内容梳理笔记&#xff09; https://nightlies.apache.org/flink/flink-docs-release-1.17/docs/dev/python/overview/ 这 Flink API …

winForm初始

创建winForm应用程序步骤 创建项目界面设计&#xff0c;拖控件布局设置属性编写代码运行程序 设置属性 在forms框内右击属性 属性框内有 修改标题 在(属性)里的外观里的Text, 点击text后会出现相对应的提示 设置关联属性名称 查看代码 右击 设置label名称 设置textbox关联属…

38-Vue之cron表达式组件使用

cron表达式组件使用前言vue-cron-editor-buefy1. 安装vue-cron-editor-buefy包2. 使用3. 配置路由4. 运行并查看效果vcrontab1. 安装vcrontab包2. 使用3. 配置路由4. 运行并查看前言 本篇来学习下vue中如何生成cron表达式的两个包 vue-cron-editor-buefy 1. 安装vue-cron-ed…

先认识浏览器和 dom

先认识浏览器和 dom 认识浏览器使用控制台(console)初识 dom获取浏览器可见区域高度简单的操作一下 dom向页面添加一个元素innerHTML认识块模式认识坐标与定位小结认识浏览器 我们先创建一个文本文件,然后将其扩展名改成 html,或者直接创建一个 html 文档。嗯,空白的,里…

『pyqt5 从0基础开始项目实战』08. 本地数据配置文件的保存与读取之SMTP邮件报警(保姆级图文)

目录导包和框架代码简化说明绑定鼠标事件编写弹窗UI和读取配置保存配置功能读取本地配置文件编写UI界面保存设置main.py中启动弹窗UI完整代码main.pythreads.pydialog.py总结欢迎关注 『pyqt5 从0基础开始项目实战』 专栏&#xff0c;持续更新中 欢迎关注 『pyqt5 从0基础开始项…

什么是MVVM?

MVVM 是 Model-View-ViewModel 的缩写&#xff0c;是M-V-VM三部分组成。它本质上就是MVC的改进版。 M&#xff1a;Model 代表数据模型&#xff0c;也可以在Model中定义数据修改和操作的业务逻辑。 V&#xff1a;View 代表视图UI&#xff0c;它负责将数据模型转化成UI 展现出来。…