Godot笔记
文章平均质量分 54
开发游戏的老王
技术专栏作者
独立游戏开发者
高校教师
Unreal Open Day 2022演讲嘉宾
Unreal Cirle2023苏州站演讲嘉宾
Unreal Cirle2024成都站演讲嘉宾
展开
-
程序员用12小时复刻《羊了个羊》,代码已开源!
原文交由CSDN并由CSDN官方公众号和CSDN资讯首发,所以这里附个链接(见下方)。原创 2022-09-20 17:02:52 · 1887 阅读 · 11 评论 -
Godot Engine:用着色器实现通过开关隐藏部分模型
使用情景代码很简单。这个着色器可以用在动画的开发流程中,比如游戏角色要持各种枪,在Blender中作动画时,可以给手上添加一个临时的简模(一个Cube)当作枪,这样比较方便做动画,这个简模上使用下面的着色器材质。在游戏运行时,将它隐藏掉,真正的枪则通过BoneAttachment动态添加上去。这样就非常灵活了。着色器shader_type spatial;uniform bool is_hide = false;void fragment(){ if(is_hide){ ALPHA =原创 2020-11-09 20:26:37 · 818 阅读 · 0 评论 -
试用Godot Engine Web版--可以运行在浏览器上的游戏引擎,服不服?(测试版本custom_build.98ef1d80d)
【Godot Engine Web版地址】Godot几十兆的体积在引擎界已经算超轻量级了,再加上跨平台又免安装,所以老王没太整明白Web版的目标用户群是哪些。不过既然有了,还是体验一下吧。文章目录初始界面新建项目小结初始界面可以加载已有项目也可以新建项目,旁边还提供了一个用于测试的项目点击Start Godot Editor,等待加载一会,便来到了熟悉的界面新建项目注意: 新项目的目录一定定位到/home/web_user/projects下面,否则会创建失败!还是那熟悉的.原创 2020-11-04 09:46:38 · 1541 阅读 · 1 评论 -
【手把手带你Godot游戏开发 第二弹】名场面临摹 之 街霸3D(本文荣获1024程序员节【最技术奖】)
前言完成了《【手把手带你Godot游戏开发 第一弹】零基础入门案例:FlappyBird》,有小伙伴问有没有第二弹,一时冲动承诺来个3D大作临摹真·全流程,结果做着做着发现这个真是一个工作量巨大的教程,然而,自己挖的坑,流着泪也要填上!你们要的,第二弹的街霸3D名场景临摹,终于来啦!...原创 2020-10-31 18:45:53 · 5760 阅读 · 28 评论 -
Godot Engine:使用动画回调生成以及释放冲击波
书接上文《Godot Engine:用粒子系统实现一个波动拳的冲击波,对,就是那个哈豆啃》效果图文章目录效果图HadokenBallHadokenBall的脚本使用BoneAttachment节点来获取手部骨骼的位置隆的代码使用AnimationPlayer设定动画回调HadokenBall为HadokenBall加一个脚本HadokenBall的脚本HadokenBall有两个状态:在手中运气团球的状态:会跟随手部运动脱离手掌的状态:匀速直线运动下面代码中的position_.原创 2020-10-30 13:52:09 · 2248 阅读 · 3 评论 -
Godot Engine:用粒子系统实现一个波动拳的冲击波,对,就是那个哈豆啃
书接上文《Godot Engine:街霸隆在动画状态机基础上实现的必杀技触发》,不能干打雷不下雨了,万众期待的那个冲击波该出来了这个哈豆啃的实现方法和《Godot 粒子特效:Low Ploy风格火炬》中火炬的实现很相似,基本上仅仅是一些参数的微调,还有这篇文章《Godot粒子系统:用3D Particles实现拖尾效果》大家也可以参考一下几个要点提示一下:这里粒子的mesh使用了Quad,并且将其材质设为了particle Billboard并且Quad的材质一定勾选Vertex Color.原创 2020-10-29 19:46:53 · 1055 阅读 · 1 评论 -
Godot Engine:街霸隆在动画状态机基础上实现的必杀技触发
书接上文《Godot Engine:街霸隆的动画状态机(Animation State Machine)》,我们已经为隆构造简单的动画状态机,本章节我们把《Godot Engine:格斗游戏中的必杀技(大招/绝招/特殊技/Special Move )输入系统实现》一文中实现的必杀技输入系统也添加到项目中。效果图文章目录效果图隆的脚本添加必杀技输入系统隆的脚本这回我们不在隆的脚本中直接接受必杀技的输入了,而是采用回调的方式#Ryuextends Spatialonready var p.原创 2020-10-28 18:42:49 · 730 阅读 · 0 评论 -
Godot Engine:街霸隆的动画状态机(Animation State Machine)
书接上文:《Godot Engine:街霸隆的动画(Idle/波动拳/升龙拳)导入步骤以及运行时的简单动画切换》,我们已经完成了Idle/波动拳/升龙拳动画的导入与加载,甚至还写了动画简单切换的代码为什么要使用动画状态机?原创 2020-10-26 15:52:21 · 1565 阅读 · 0 评论 -
Godot Engine:街霸隆的动画(Idle/波动拳/升龙拳)导入步骤以及运行时的简单动画切换
文章目录效果展示0. 动画准备Idle动画波动拳升龙拳1. 导出模型与动画1.1. 隐藏不必要的集合1.2. 以glTF格式导出2. 导入Godot Engine3. 模型提取以及动画数据的提取与加载3.1. 模型提取3.2. 动画提取及加载3.3. 动画加载3.4. 动画设置设置默认动画设置循环动画4. 场景搭建5. 简单的动画切换效果展示0. 动画准备Idle动画波动拳升龙拳1. 导出模型与动画这三个动画全是用的同一个绑定,下载地址见Blender Rigify版街霸角色隆(Ry原创 2020-10-25 11:26:15 · 1702 阅读 · 0 评论 -
Godot Engine:格斗游戏中的必杀技(大招/绝招/特殊技/Special Move )输入系统实现
前言必杀技系统是格斗游戏中必不可少的元素,要触发角色的必杀技,必须在一个很短的时间内,准确无误地输入一个按键序列,比如下表中街霸角色隆的部分必杀技:波动拳 下,前,拳升龙拳前,下,前,拳在上表中不难发现波动拳的下,前,拳是升龙拳前,下,前,拳的子序列原创 2020-10-24 18:11:23 · 2831 阅读 · 9 评论 -
Blender图解教程:人肉三维重建 之照着图片抠个街霸本田澡堂子(10月26日 精装修)
网上找到的一张本田主场的背景图把其中大的结构通过建模的方式构造出来这一步是本文的关键:在2D视图中选择模型的面片,并在UV编辑器中把它摆放到适当的位置。如果出现了UV上下左右颠倒的情况可使用:翻转UV:按S再按X/Y(以X/Y为轴)再按-1原创 2020-10-21 09:33:39 · 2353 阅读 · 8 评论 -
Godot Engine:街霸隆冲击波(预告片儿)
预告片儿今天水一篇,明天正式发波儿原创 2020-10-20 20:20:48 · 741 阅读 · 0 评论 -
Godot Engine:布娃娃系统(Ragdoll System)及物理骨骼(PhysicalBone)的工作流程
文章目录0. 模型准备1. 配置物理骨骼2. 编写脚本3. 测试运行0. 模型准备在Blender完成建模及蒙皮,以glTF格式导出模型(Boy.glTF)1. 配置物理骨骼Boy的默认场景结构如下选择Skeleton并创建物理骨架Godot会在Skeleton为我们生成和模型骨骼对应的Physical Bone子节点2. 编写脚本在Boy节点上添加一个脚本#Boy.gdextends Spatialfunc _process(delta): if Input.is_k原创 2020-09-09 22:11:12 · 2663 阅读 · 0 评论 -
Godot Engine:用BoneAttachment节点为骨骼附加物
BoneAttachment是一个非常重要的节点,使用它可以在游戏运行时,动态地为骨骼添加附加物体,比如可以动态拾取场景中的物件(从地上捡个武器呀道具呀什么的),并使其成为骨架中某根骨头的子物体。本文将用一个小案例来介绍它的使用方法原创 2020-09-07 12:23:08 · 1101 阅读 · 4 评论 -
你的第一个2D Shader(CanvasItem Shader)
原文地址:Docs » Shading » Your first shader » Your first CanvasItem shader导论本教程将从实践的角度手把手教你写一个包含vertex函数和fragment函数的Shader。本教程完全面向初学者。注意:如果你有编写Shader的经验或者仅仅是想Godot Shader的工作概要,请阅读《Shader手册》准备工作2D Shader(CanvasItem Shader)被用于绘制Godot中的所有2D对象,3D Shader(S.翻译 2020-09-03 21:36:27 · 902 阅读 · 0 评论 -
Godot Shader:读屏着色器
原文地址:Docs » Shading » Screen-reading shaders导论我们经常会渴望能够在shader中读取当前正在绘制的屏幕信息。然而诸如OpenGL DirectX 等3D API由于内部硬件的限制实现这个功能都非常困难。GPU是极端并行性的,所以读写屏幕会引发各种各样的缓存以及同一性问题。因此即使现在最先进的硬件设备也没有很好地支持这个机制。替代方法是制作一个全屏幕或者部分屏幕的拷贝,存储到后台缓冲区(back-buffer),渲染的时候从中读取。Godot提供了几个工.翻译 2020-08-13 15:22:41 · 1790 阅读 · 0 评论 -
Godot Engine:gitignore设置
Godot项目目录比较简单.import是默认产生的文件夹,Godot导入外部文件产生的文件都存在这里local_only是自建的文件夹,不打算放到git管理中的所有文件都放到这里原创 2020-08-12 16:54:35 · 855 阅读 · 0 评论 -
Godot Engine:选择Skeleton节点时出现不停输出“object was deleted while awaiting a callback”并死机问题
Blender 2.83.4Godot Engine 3.2.3 rc3问题描述在Blender中使用Rigify绑定了一个角色模型并做了简单的测试动画,以glTF格式导入到Godot中。运行动画倒是没有问题。只不过一选择编辑器中的Skeleton节点必死机这是死机时后台的输出情况产生原因这是Godot自己的BUG,主要是由于骨骼过多造成的,GitHub上相关问题有很多,目前还没有解决。解决办法老王转念一想,我的角色很简单,那用得了这么多骨骼,一检查才发现,导出时把所有骨骼都导出来.原创 2020-08-11 16:57:41 · 766 阅读 · 2 评论 -
Godot Engine:动画资源导入/导出
文章目录概述导出导入概述老王一般是使用Blender来制作游戏动画,Blender很强大但是在动画片段管理这方面有点迷(也可能是我没研究明白的原因),就是动画片段和片段之间经常出现莫名其妙的“干扰”。所以在Blender-> Godot工作流中,可以采取另外的办法,就是:每个Blender文件只做一个动画,然后将模型以 glTF格式导入Godot中,然后再用Godot的动画导入导出功能来管理它们。导出这样我们就得到了独立的动画资源,动画资源是可以在相同的骨架之间复用的导入...原创 2020-08-11 10:10:57 · 2876 阅读 · 0 评论 -
游戏中的数学:高等向量数学(下)
英文原文地址:Docs » Math » Advanced vector math转载请注明出处一些平面的例子这是一个展示平面用途的简单例子。试想一下,你有一个凸多边形(convex polygon)。例如,矩形,梯形,三角形或者任何不包含凹陷面的多边形。我们求得通过多边形的每一个面片的平面,以获得一个平面的列表,这时我们就可以爽歪歪了,比如我们可以一个点是否在多边形内部。我们遍历每一个面,只要我们能找到一个平面到点的距离是正的,那么这个点就在多边形外,否则点在多边形内部。示意代码如下:.翻译 2020-08-07 10:04:54 · 463 阅读 · 0 评论 -
Godot Engine:GDScript 4.X中语法的变化(2020年8月4日 更新)
文章目录4.X版 GDScript范例支持注解属性(Properties)的定义格式await关键字代替yield加入super关键字去除了多级调用问题小结4.X版 GDScript范例支持注解从4.x开始,GDScript将支持类似JAVA一样的注解机制,同时一些3.X时期存在的关键字将改用注解的方式。比如比较常用的export关键字,它会由一系列的注解来代替,比如用上面范例中的@export_range实现限定变量范围。并且,从4.x彻底不需要用类似export(int)的形式声明类型了,系统会原创 2020-08-05 17:18:56 · 5757 阅读 · 1 评论 -
游戏中的数学:向量数学(vector math)
向量数学(Vector math)导论本教程是一个针对线性代数(linear algebra)在游戏开发中应用的一个简短的实践性教程。线性代数是一个研究向量及其应用的学科。在2D及3D游戏开发中,向量有着非常多的应用,Godot引擎对它的使用也非常广泛。所以,想成为一个牛逼的开发者,对向量数学的深入理解是必不可少的。注意:本文并非正式的线性代数教科书。我们将仅关注其在游戏开发中的应用。想更全面地了解数学知识,请参见线性代数在线教程坐标系(2D)在2D空间中,使用水平轴(x)以及垂直轴(y)来定翻译 2020-08-04 20:50:58 · 3886 阅读 · 0 评论 -
Godot Engine:属性面板(检视面板)插件(Inspector plugins)
参考官方文档《Inspector plugins》在Godot中属性面板(检视面板)插件(Inspector plugins)是一种特殊编辑器插件创建步骤1. 创建plugin.cfg2. EditorPlugin脚本3. EditorInspectorPlugin脚本4. EditorProperty脚本1. 创建plugin.cfg这一步和普通的编辑器插件一样,请见《Godot Engine:编辑器插件(Editor Plugin)开发 之 Hello World》2. EditorPlu.原创 2020-08-03 21:11:53 · 1206 阅读 · 0 评论 -
Godot Engine:那些从其它引擎(工具)中借来的设计
从Blender中借来的导航操作平移Shift + 中键缩放鼠标滚轮旋转视图中键从Unreal中借来的飞行模式: 按住鼠标右键 + A/S/D/W放置到地面:选中对象然后按PAGEDOWN从Unity中借来的Camera的Aligin With View...原创 2020-08-02 20:12:11 · 719 阅读 · 0 评论 -
Godot Engine:资源加载(load)VS 资源预加载(preload)
文章目录原型官方文档的解释总结原型load方法的原型Resource load(path: String)preload方法的原型Resource preload(path: String)官方文档的解释loadpreload执行时间程序执行到该语句时加载代码解析(编译)阶段加载参数要求常量和变量只允许常量总结preload是godot为自研语言GDScript设计的一种“作弊”手段,所以只要你能提供一个常量地址,就直接用preload好了,其原创 2020-08-01 19:41:53 · 3680 阅读 · 0 评论 -
Godot Engine:编辑器插件(Editor Plugin)开发 之 添加一个编辑器按钮
文章目录新建按钮EditorPlugin脚本效果新建按钮编辑器按钮的创建方式和普通按钮完全一致按钮的脚本,注意一定要加上 tool,这样才可以在编辑器中执行toolextends Buttonfunc _enter_tree(): connect("pressed",self,"_on_btn_click") func _exit_tree(): disconnect("pressed",self,"_on_btn_click")func _on_btn_click(): pr原创 2020-07-31 17:56:03 · 1061 阅读 · 0 评论 -
Godot Engine:KinematicBody中move_and_slide的返回值不是闹着玩的
文章目录方法概述缘起一个BUG解决办法方法概述KinematicBody中move_and_slide方法,它的原型是下面这样的Vector3 move_and_slide(linear_velocity: Vector3, up_direction: Vector3 = Vector3( 0, 0, 0 ), stop_on_slope: bool = false, max_slides: int = 4, floor_max_angle: float = 0.785398, infinite_in原创 2020-07-30 19:25:29 · 1567 阅读 · 0 评论 -
Godot Engine:用Sprite3D在3D场景中的实现一个简易的头顶血条(Shader版)
在《Godot Engine:用Sprite3D在3D场景中的实现一个简易的头顶血条(Animation)》介绍了一种使用Sprite3D来实现头顶血条的方法,实际上该方法的关键是使用AnimationPlayer来控制Sprite3D的大小。本文再介绍一种基于Shader的。步骤1. 血条的图片2. 节点结构注意:启用Sprite3D的Billboard这样无论Player如何转向,血条永远朝向摄像机。3. 编写Shader为Sprite3D新建ShaderMaterial并编写其Shad原创 2020-07-29 21:26:25 · 931 阅读 · 3 评论 -
Godot Engine:编辑器插件(Editor Plugin)开发 之 Hello World
Godot Engine 3.2.3.rc1文章目录步骤1. 创建插件框架2. 创建UI3. HelloWorld脚本演示之前写过一篇博文《GDScript:使用EditorScript开发简单的编辑器脚本》,编辑器脚本(EditorScript)只提供了一个run方法,它的访问能力也很有限,所以只能实现一些非常简单的功能,编辑器插件(Editor Plugin)就强大太多了,可以访问场景树,访问编辑器UI,甚至可以直接使用Godot的UI系统创建插件的UI步骤1. 创建插件框架在项目设置(P.原创 2020-07-28 21:34:57 · 1565 阅读 · 0 评论 -
Godot Engine:使用GridMap创建三维TileMap
又一个Godot内置的好东西,Godot不仅内置工具齐全,而且工具都非常好用步骤1. 创建瓦块2. 创建MeshLibrary2.1 导入模型2.2 新建一个场景重来生成MeshLibrary2.3 将场景转换成MeshLibrary3. 创建GridMap3.1 设置GridMap3.2 绘制GridMap1. 创建瓦块本文使用Blender建模。无论使用什么建模工具,必须要注意以下几点:原创 2020-07-27 16:56:30 · 2133 阅读 · 1 评论 -
Godot Engine:用Sprite3D在3D场景中的实现一个简易的头顶血条(AnimationPlayer版)
Godot的2D和3D使用了两套渲染系统,多数情况下是非常方便的,唯独在2D/3D混合显示的时候有些麻烦,需要通过Viewport来过渡。在3D场景中的2D显示需求中,头顶血条是比较常用的,其实如果不愿意使用Viewport,使用一个Sprite3D通过着色器来实现也不复杂。本文介绍的第三种方法,使用了一个AnimationPlayer来控制血量显示,很多时候也是一个不错的选择。效果图步骤1. 血条的图片2. 节点结构注意:启用Sprite3D的Billboard这样无论Player如何转.原创 2020-07-25 21:36:40 · 1137 阅读 · 0 评论 -
手把手教你从源代码构建Godot Engine(三)编译引擎
终于到了激动人心的编译阶段了!Godot的编译还是非常方便快捷的,大家可以自己试一试!原创 2020-07-22 20:02:33 · 3718 阅读 · 2 评论 -
手把手教你从源代码构建Godot Engine(二)接入第三方模块Steam SDK,Spine Runtime等
概述第二部分将介绍如何接入自定义模块或第三方模块,其中Steam SDK和Spine Runtime是我项目中要使用的模块。如果你不需要它们,可以直接跳过此部分。如果你要接入其它模块,它们的原理大体相同。细节上按照模块的说明操作即可。原创 2020-07-22 16:29:34 · 3251 阅读 · 0 评论 -
手把手教你从源代码构建Godot Engine(一)构建工具安装
为什么要通过源代码构建Godot Engine?如果只是在Godot编辑器做些Demo玩玩或者用官方提供的模板导出一个Windows或者安卓项目,完全没必要自己构建Godot。但是如果有下面的情况基本上躲不开这一步了: 需要修改Godot的源代码或者自定义模块需要接入一些第三方模块,比如Steam或者Spine等第三方模块原创 2020-07-22 14:09:51 · 3133 阅读 · 0 评论 -
Godot Engine:多重采样抗锯齿(MultiSampling Anti-Aliasing)设置
Godot Engine 3.2.2默认状态下Godot渲染的锯齿很严重解决办法:开启MSAAMSAA是MultiSampling Anti-Aliasing的英文缩写,指多重采样抗锯齿,原理是寻找出物体边缘部分的像素,然后再把画缩放到当前的显示器上。数值越大抗锯齿效果越好,当然系统压力也越大开启后的效果...原创 2020-07-19 18:35:13 · 2790 阅读 · 0 评论 -
Godot Engine:巧用适配器模式让你提前进入4.x时代
近日Godot Engine 3.2.2 stable已经发布,而万众期待的4.0版本也预定于明年春季发布。虽然已经有4.0开发版可下载,但是还很不稳定。众所周知3.x到4.x一些程序接口被重构了,那么现在开始一个项目,到底是用3.x开发明年换了4.x再重构呢?还是忍着各种闪退的痛直接用4.x呢?原创 2020-06-30 16:20:27 · 950 阅读 · 1 评论 -
Godot 4.0中的基于有向距离场SDF(Signed Distance Field)的实时全局光照技术
原文地址 Godot官网 《Godot 4.0 gets SDF based real-time global illumination》 作者 Juan Linietsky 6月28日Godot 4.0的开发正在稳步进行中,一种新的全场景全局光照技术(full-scene global illumination)已经加入到开发主分支。翻译 2020-06-29 17:13:23 · 3993 阅读 · 0 评论 -
Godot Engine:Hello Godot 4.0
非官方每日版下载前几天Godot Engine 3.2.2 stable正式发布了,这是一个LTS版本。下一个里程碑将是万众期待的Godot 4.0了。今天Juan上传了几个4.0的预览视频,主要展示了4.0的实时全局光(Realtime Global Illumination)以及超大场景的加载能力,相当的给力。演示效果SDFGI 实时全局光+超大场景加载漫反射镜面反射下载试用看完预告片实在按捺不住激动的心情,于是下载试用一下。据说正式版要明年春季发布,目前是开发版,可以从.原创 2020-06-28 15:33:45 · 5583 阅读 · 4 评论 -
Godot Engine:用Shader实现旗帜飘飘的效果
本文是《【手把手带你Godot游戏开发 第二弹】名场面临摹》的一部分。老王将手把手教大家如何使用Godot引擎的Shader,实现一个游戏中常见的旗帜飘飘的效果。原创 2020-05-01 20:59:51 · 2974 阅读 · 1 评论 -
Godot Engine:马里奥食人花三部曲(三)用SkeletonIK实现食人花捕食目标
书接上文《Blender图解教程:马里奥食人花三部曲(二)骨骼绑定和动画》,这一回我们将进入Godot游戏引擎,完成最关键的部分,当目标(马里奥)接近食人花,食人花可以根据目标的位置进行捕食效果图文章目录效果图步骤1. 模型导入Godot Engine2. 构造场景3. 设置SkeletonIK4. 测试5. 运行时实现步骤1. 模型导入Godot Engine将从blender导...原创 2020-04-30 16:31:38 · 2678 阅读 · 0 评论