godot吧
关注: 5,973 贴子: 30,492

godot游戏引擎技术交流讨论

  • 目录:
  • 软件及互联网产品
  • 4
    在知乎上写了一个帖子,本来要发在吧里的,但是写太长了,所以就跑知乎了,大家知乎上看 手把手教你在Godot2D当中实现高性能草地渲染网页链接 应该还是比较容易看懂的,毕竟已经手把手地教了(汗
  • 19
    关于无限循环列表,在Godot中并无实现,当我们的数据多到一定程度的时候绘制滚动的item内的内容会有很大的开销,所以打算自己写个无限滚动列表,目前的设想是生成几个item充满ScrollView,当滚动到最后一个item时,把最上面的item拿到最下面,根据数据的不同刷新每个item的显示,可以支持不同的item在列表内滚动。 保持更新。。。
  • 2
    如下面动图所示,长按鼠标左键模拟弹出菜单(项目设置里打开输入鼠标-> 指点->鼠标模拟触摸) 先创建一个一次手动开启计时器(开启one shot),并设置等待时间 在输入里检测触摸按下事件,如果开始按下则启动计时器,记录按下位置, 如果提前松开则取消计时。 计时器时间结束触发菜单可以有两种写法: 第一种直接获取菜单,设置位置然后显示 第二种模拟鼠标右键,让lineEdit节点处理。
  • 0
    写了一篇博客关于GDExtension cpp的环境搭建与使用基本操作。感兴趣的可以看一看。 网页链接 https://blog.csdn.net/m0_52880224/article/details/130663521
    昵称 5-18
  • 3
    在gdextension中向类中添加属性(字符串类型)时好像只能添加godot::String类型的?使用char* 或std::string之类的会报错。但cpp中的库使用后者,使用一些cpp库的时候不可避免的要进行转换,这里写了一篇博客关于godot::String与char*,std::string之间的相互转换。 https://blog.csdn.net/m0_52880224/article/details/130636688
  • 97
    感觉 Godot 在果外的影响力已经仅次于 Unity 和 UE了,但在果内好像基本没啥动静。。。 这么好的工具没人用确实可惜了,为此我准备尝试写一篇零基础的Godot编程入门教程,希望更多人入坑 Godot。 教程还在编写中,目前只有个 Github 的连接,等我 Gitee Page 认证通过了会尝试传到果内的 Gitee 上。https://reimenn.github.io/MyGDSciprtBook/
    oldsecar 6-3
  • 48
    个人在学习godot时写的,方便unity玩家快速上手godot,当然不会uniry的也能看。 共一万四千多字,编写不易,学费3滑稽币。 markdown在线版:网页链接 pdf版:网页链接 以后再放到其他平台上,现在先用gitee凑合
    DA200015 5-20
  • 16
    一楼放搜索关键字(按住、点击;长按、短按;hold key、click key;long press、short press) 前排提示:字多,但其实信息量非常低,新手放心读 前排提示2:处于非编写脚本状态时,需将 Godot 页面切换回 2D,以便正常使用快捷键。(点击 Godot 窗口顶部居中位置四个主屏幕按钮 "2D,3D,Script,AssetLib" 的 "2D" 即可切换)
  • 3
    这是给入门 godot 的新手提供的帮助 1.导出设置 翻译:class as game :这是一个游戏吗? retain data on uninstall :删除后是否保存文件? 安卓权限列表 在安卓权限里找到这2个并打开 2.在你的脚本里添加这个 # OS.request_permissions() #向用户申请你所勾选的所有权限 3.检测路径 #var savedir:Directory = Directory.new() #--检测路径是否存在,不存在就按指定创建路径 #if !savedir.dir_exists("user://saves/"): # savedir.make_dir_recursive("user://saves/") 3.5 #var SAVE_DIR = "user://sav
    in 9-14
  • 10
    我个人是主要做前端的,最近需要在页面插入godot生成的H5内容, 发现网上的文档对于H5数据交互方面写得不是很详细, 官方的帮助搜出来的更是抽象, 摸了些坑后,算是解决问题了,分享下我自己的解决方法 需要在页面调用godot内容时: # 创建godot的JavaScript Callback对象 var _onJavascriptCallback = JavaScript.create_callback(self, "_on_js_callback") # 在页面创建与godot交互的接口 if OS.has_feature("Javascript") or OS.has_feature("HTML5"): JavaScript.eval(""&quot
  • 14
    根据Atwood定律:“一切能够用JavaScript编写的,最终都会用JavaScript来写”,于是乎我就找了找看看有没有人已经做过可以用JavaScript来写Godot程序的东西,还真的发现了。地址见二楼。
  • 40
    近日本人用rust写godot代码由于出了点问题,谷歌搜索问题也搜不到,突然想到贴吧这个好东西,我赶紧在搜索框搜rust关键字,结果啥也没有,所以我打算开个godot-rust帖子,给一些用rust的小伙伴点建议,具体想到啥写啥
    ADRESG 5-27
  • 11
    <阅读并理解本文需要一定GDscript基础> 事关紧急,咱们就直接步入正题: !!!但虽然紧急,可本文如有错误,欢迎指出!!! 各位请看一下这个代码: 很简单,不是吗?上面这段代码就是在_ready函数被加载时,调用test函数。 可在Godot3中,我们试着像其它语言那样,引用函数时就会发现: 这是错误的!!! 因为Godot3 GDscript中没有用于存储函数的类型! 我们可以这样简单地理解,当GDscript编译器处理到函数,会把它们单独处理,加载到当前节点
    a173512 1-30
  • 9
    本人最近研究了Godot的架构,在使用GDExtension时,发现网上的中文资料很少!!!所以本人抽空,在这里讲解一下如何使用GDExtension,并在Godot4中继续使用新版本的GDnative 首先,GDExtension是什么,GDExtension实质就是Godot4.0加入的新的二进制模块处理架构,使用它,可以实现在不编译引擎的情况下,直接给引擎编写模块(引入新的类) 当然,一提到二进制脚本,你可能会想起在Godot4.0之前的GDnative,如果你有GDnative开发经验,你应该会知道GDnative的原始C API是繁
    Taro 12-16
  • 4
    众所周知,Godot可以导出HTML5版本,但存在一些问题。
    柯哆啦 8-21
  • 17
    有一段时间没发帖子了,主要是生活所迫,最近有了时间,并且本人已经学习了一段时间的Godot源码,也算是有所见解,所以准备把Godot类型的内存分布与管理讲一下 顺便插一句,因为之前电脑出了一点问题,我还把工作环境迁移到Linux: -----------------------------------------分割线----------------------------------------- 正文: 对于Godot类型来说,在gds中,因为官方已经将大部分工作压缩精简,所以gds中我们很少会花心思去管理内存, 所以有时候gds在传递变量时,
    黑翅 3-19
  • 6
    之前用Bitmap Font Generator做位图字体感觉有点耗工,最近试着借用文本来做简单的数字位图字体,效果还行 1、先用PS做好美术字(我这个是宽40像素、高64像素)然后合并成一张合并.png 2、新建文本文档.txt,参考下图录入、调整后保存为.fnt文件 3、将文件拉到godot项目里使用 关于char id字符的id可以查看ASCII编码对照表(数字0~9对应id是48~57)
  • 28
    写这个是因为基础教程中语焉不详, 中文翻译里还有错误. 网上的正则教程也是各种难以理解 所以我一边查资料一边写了这个笔记式的教程 供新人参考, 如果有错误请指出
  • 18
    着色器很重要,于是跟着吧里的教程结合了一些其它的资料学习了一下,在这做个笔记。
  • 24
    菜单等许多地方都需要用到GUI,在这里对Godot中一些常用的GUI做一下总结,顺便作为学习笔记。
    kankan1322 4-13
  • 7
    我又来水贴了 一些游戏中,存档功能是很重要的,结合我的经验谈一谈
    柯哆啦 3-25
  • 13
    近来闲聊无事,研究了一下gds的性能问题: 因为gds是脚本语言,这意味着性能很大程度上是与代码书写有关的,可到底有怎样的关系呢?翻阅全网,好像只有将gds与其它语言性能对比的,没有对gds书写带来的性能的差异做测试的,于是本人做了以下试验: 测试环境:Godot_v3.2.3-stable_win64 注:本测试只是测试对比,并不代表GDS实际性能 测试的平台(系统),测试时系统后台的处理,平台的实际算力.....都会影响代码的运算时间,本文的给出的代码运行时间
    多能豆 2-17
  • 39
    发了个帖子,结果消失了,又得重发了....没保存........2小时写的.........好气...... 所以本贴挑重点讲 如何将Godot的HTML5导出项载入小程序 我们需要HBuilderX作为构建工具,并且需要下载对应平台的开发者工具并注册 首先下载HBuilderX标准版: 下载uni-app编译插件: 新建一个uni-app项目,使用默认模板: 将Godot导出的HTML5文件全部移入刚才项目的static文件夹: 修改index.vue为以下代码: 然后编译并调试,你也可以直接选择运行到小程序模拟: 正常运行 最后发行
  • 26
    因为想实现语音识别,但是讯飞的太贵了,所以想在本地实现,但是造轮子很复杂,于是研究了一下NativeScript,终于可以用C++写代码了。官方文档虽然很详细,但是太繁琐了,于是,在这里整理一下如何使用C++编写NativeScript
  • 50
    前言 原本是想用Unity开发游戏,但是太麻烦了,然后发现了Godot,学习和使用了一下,感觉不错。就是中文资料比较少,英文资料也不多,所以就想写一些东西。基础教程有人写了,所以我就写个其他的吧。于是,就有了这贴。
    柯哆啦 2-5
  • 36
    在新手看来,想用一大堆意义不明的陌生词汇做出一个游戏,就好像有人给了你一瓶植物细胞,让你把它们拼成一朵完整的花(并且实现雌蕊雄蕊的授粉功能)一样不可思议。 即便有人告诉你,这里可以使用XX信息素导航,那里需要搭配XX系统XX酸防范细菌入侵,你也可能并不知道这些XX信息素XX酸是由哪个植物细胞产生的。 —————— 不过幸好,godot不仅有详细的文档,而且在编辑器里也内置了一份API,查起来相当的方便, 这个帖子一方面会介绍
  • 7
    在主贴: 【着色器介绍】Godot着色器从入门到入门 https://tieba.baidu.com/p/6604817792 中,漏讲了两个非常重要的知识点,因为太重要了,所以在这里补充: 1.对于Sprite3D,在给它material_override添加材质后,你第一个uniform sampler2D的图片是固定获取自Sprite3D的Texture属性的: 着色器代码(将第一个uniform sampler2D加载的图片渲染): 两个对应的uniform sampler2D: 但实际上,第一个uniform sampler2D渲染的就是Texture属性加载的图片!!!!: 无论你第一个uniform sampler2D中加载
  • 40
    第一次在这个吧发帖,希望能帮到大家 ,下面会发出一些控制主角移动的几种不同方式, 供大家参考,写的不好的还请多指点!~
  • 55
    原先发在“godot游戏引擎吧”的,借贴吧记录一些使用过程中的心得笔记,为了统一资源,方便查找,就搬家过来了。 ps:也建议大家可以发贴记录一些没形成系统化的、零散的知识点,godoter有时候就卡那上面了。
  • 12
    想要保存游戏,首先得有一个保存游戏的文档,比如建一个Game.json(后缀名自起,格式为json就行),内容如下: {"has_old_game":false, "Game":"1-1"} 代码如下(设为自动加载,这样所有代码都能访问的到): # 加载游戏存档函数 func load_game(): var loader = File.new() loader.open("res://Json/Game.json", File.READ) var json = parse_json(loader.get_line()) loader.close() return json # 保存游戏存档函数 func save_game(game_data): var saver = File.new() saver.open("res://Json/Game.json&quot
    景北斗 8-12
  • 104
    (本系列教程!并不会!讲到可视化着色器) 看了一下,吧里都没人吐槽Godot的着色器语言吗??? 说实话,Godot的着色器语言教程是真的浓缩: 开篇直接丢出“它和openGL”很像,然后就是介绍一些基本的东西,然后再来了一波“花里胡哨”的操作: 先是搞出山脉,再把山脉搞成海面。接着就给你讲了一些“高级”的操作。(最主要这些文档未翻译完全!!!) 我敢打一百个赌,新手绝对看不懂。在此,开一个小小的坑,我在这把官方想讲的内容捋
    a173512 1-24
  • 4
    主贴链接: https://tieba.baidu.com/p/6574833207 接着之前的,既然我们有了机瞄,那么接下来我们就要实装“倍镜”效果,而倍镜实现的效果大致有两种: (1)适应性,即整个画面都放大 (2)真实型 我们首先做(1),依旧得益于Godot强大的动画系统,我们根本不需要写代码: 相机下有一个fov(视场角)属性,默认70,只要将其调小,就可以实现放大效果 点击我们之前创建的AnimationPlayer,到动画编辑界面中,点击添加轨道 -> 属性轨道: 再找到eye(相机
  • 0
    作为一款FPS游戏,最令人振奋的时刻莫过于使用狙击枪打开倍镜拉栓的那一瞬间 这次,我们来试着做“倍镜” 根据“循序渐进”的道理,我们先来做“机瞄” 得益于Godot强大的动画系统,我们可以十分方便地完成这项工作: 首先,添加一个“倍镜”(ker),使其作为gun的父节点 这样做的原因是:在之后我们可以直接移动倍镜,子节点gun也会跟着移动 大致是这样: 然后有请我们的主角AnimationPlayer: 点击它,跳转到动画编辑器窗口: 点击 动画 ->
    多能豆 4-5
  • 0
    首先在根节点(world)下添加一个KinematicBody,并命名为Enemy,并添加如下节点: 大致是这样: 当然,敌人的形状你想改成什么样子都可以,但gun(红色的)的位置不可以变!它必须在Z轴的反方向(即蓝色箭头的反方向),原因稍后解释。 接下来我们看脚本: 首先是变量: 毕竟敌人是会和玩家一样发射子弹的,所以先预加载"but"场景,并声明clone方便后续操作 敌人的手速不能“快到飞起”,所以我们得设置一个time,使其每隔一段时间再发射一次子
  • 5
    首先,我们得先到子弹的脚本下写出: 我们新增了两个变量: !子弹伤害 !击中某物(判断用) 接下来,我们在_ready()中,获取Area并连接信号: body_entered信号是检测是否有PhysicsBody或GridMap(即有碰撞行为的物体)进入Area的区域(简单来说就是检测碰撞),它可以返回与Area碰撞的物体 并将这个信号连接到当前脚本(self)的collided()函数 我们再来看一下collided()函数: 首先,它会传入参数body(即碰撞的物体,可以理解为get_node(“碰撞物体”)的缩写 ) 接
    ftporg 3-31
  • 2
    主贴链接:https://tieba.baidu.com/p/6574833207 作为一个FPS游戏,灵魂所在就是开枪。这节我们来做一个简易的枪(严格上来说,它已经简易到只剩个枪管) 参考前辈们的经验,对于子弹的处理,一般有两种: (1)真实处理法: 将碰撞节点作为子弹,每帧计算它的方向,每帧检测碰撞 这样可以十分真实地还原子弹在现实世界的状态,但性能是硬伤 (2)快速处理法: 将一条射线作为子弹路径,如果该射线上有碰撞物体,则判定子弹击中 这样可以很好地避
    seed071608 12-2
  • 2
    主贴链接:https://tieba.baidu.com/p/6574833207 上一节,我们学习了如何自由地移动视角,可我们会发现,人物不会朝看的方向移动!!! 那是因为,move_and_slide()中所填的那个表示移动的向量是根据全局坐标来的 什么是全局坐标,什么是轴指向呢? 全局坐标永远都不会变,它的X永远是正右方,Z永远是正后方: (上图为坐标轴方向) 而轴指向(个人坐标)x指向此节点的右方,z指向此节点的后方 回归正题,既然move_and_slide()是根据全局坐标移动,那我们只
    seed071608 12-3
  • 5
    主贴链接:https://tieba.baidu.com/p/6574833207 既然要移动视角,那么肯定要捕获光标(即鼠标指针),那就得用到Input类下的get_mouse_mode和set_mouse_mode 其中我们需要知道的参数只有两个: Input.MOUSE_MODE_CAPTURED捕获 Input.MOUSE_MODE_VISIBLE释放 在脚本中添加以下代码: 这样,在节点加载完成时,就会将鼠标模式改成“捕获”(将光标隐藏,并固定在中心) 这样是将鼠标捕获了,可你会发现:你不能关闭游戏了!因为光标固定在中心! 当然,你可以通过键盘关闭游戏
  • 1
    主贴链接:https://tieba.baidu.com/p/6574833207 在阅读本教程请先了解2D移动(23楼): https://tieba.baidu.com/p/6551637989 在3D世界中,移动节点的方法多种多样,而KinematicBody拥有一个强大的方法: move_and_slide() 为什么说它强大呢?因为光参数,它就可以传入6个 但幸好,其中只有第一个参数必须填写,其它的都有默认值 话不多说,直接看代码: (不用在意那些注释) 绿色:定义一个变量“速度” !一下代码均被_process()包括,每帧都会执行! 红色:首先,声明一个
  • 34
    既然有人提议做3D教程,那我就稍稍写一点吧 (本教程适合对节点有一定了解的人) 概要:本教程主要以如下思路展开: 创建第一人称人物 -> 移动人物 -> 移动视角 -> 简易射击 -> 击败目标(敌人) 还是那句话:本教程可能并不严谨,如有问题欢迎提出 00 3D节点概要 首先创建如下节点: (不要在意那两个不可见节点) 这个“world”很简单,它只有两部分:(部分节点我已命名) (1)Ground地面,支持玩家在上面行走 (2)player(KinematicBody节
  • 11
    我们都知道在GDS中,逻辑判断关键字官方给出了两个:if 和 match(尤其是match,屡试不爽) 但GDS可以逻辑判断的语句有2.5个,咱们就好好讨论一下这0.5个。 如果你有编程经验,你也许听说过“短路运算”,如果没听说过也没关系,我们一起来探讨一下: (1)啥是短路运算: 你应该知道关键字 or , and , not 吧,这些关键字不仅可以在判断类语句中使用,还可以在声明语句中使用!!! 赋值的结果显而易见,但如果换成这样: 这就不好判断了,这得引
  • 18
    像素完美碰撞检测就是让两个节点以图片作为碰撞数据,然后对相交的每个像素进行碰撞检测,如图。
    tcwhq001 9-5
  • 209
    先说一下初衷吧,我跟着官方教程学了GDS,可实战以后发现官方的脑回路太过清奇,好不容易整明白后想分享一下,好让大家避避坑 【本教程所介绍的可能并不严谨,望各位海涵。若有错误欢迎指出,谢谢(*^▽^*)】 (不知道贴吧界面兼容如何,如果分割线乱了我可不管) ------------------------------------------------------------------------------------------------------------------------------------------------------- (本教程适合对godot有初步了解,但又没有编程经验的人) 00初步
  • 11
    在很多时候,我们需要判断一个节点是否为自己想要的节点,比如我想要做一个超级马里奥游戏,马里奥可以碰到硬币,也可以碰到蘑菇。其中碰硬币可以加分,碰蘑菇可以变大。问题在于我们怎么判断碰到的是硬币还是蘑菇呢? 这里LZ给出四种方法
    阿噜素 8-15
  • 3
    如果没有安装python就先安装python,再安装scons. 设置系统环境变量PATH. 增加E:\Python\Scripts路径 因为scons在这个目录里. (1):如果你想在scons里指定INCLUDE与LIB 自定义路径,可以通过修改scons源码实现,找到E:\Python\Lib\site-packages\scons-3.0.0\SCons\Script\Main.py, 在main函数的开头里增加以下代码. LIBS=['user32','kernel32','uuid','ws2_32','winmm','ole32']; LIBPATH=['E:/Microsoft Visual Studio 12.0/VC/Tools/MSVC/lib/x64','E:/Microsoft Visual Studio 12.0/VC/Windows Kits/7.1A
    imdjs 11-9

  • 发贴红色标题
  • 显示红名
  • 签到六倍经验

赠送补签卡1张,获得[经验书购买权]

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!

本吧信息 查看详情>>

小吧:小吧主共10

会员: godot

目录: 软件及互联网产品