打砖块游戏求助
godot吧
全部回复
仅看楼主
level 8
九智绅士 楼主
我在小球的问题上卡了两天了
第一是小球做为挡板子物体移动时,如果被发射出去,它依然会因为挡板移动而移动,要去掉子节点重新加回来又会出现位置bug,所以这个问题暂时搁置
第二是小球的反弹,我小球是rigibody2d,它会正常发射和消灭砖块,但是他的信号是node类型,我连位置信息都拿不到更别说用向量来做反弹了,默认的bounce方法结果打不开官方文档[泪]
我实在是不知道怎么办了,甚至翻了gds的成品代码,因为版本问题我仿都仿不了,所以求助大佬们给一个思路
我是c#4.4.1版本
2025年05月26日 13点05分 1
level 8
九智绅士 楼主
砖块也是rigibody,我记得用staticbody就会没办法接收信号不好像,所以用的rigibody,挡板也是,现在小球就是光滑的直角反弹,很怪异
2025年05月26日 13点05分 2
level 8
呃,小球作为子节点本身就会随着父节点移动而移动,你要独立就改成独立节点。。。至于位置bug,你没说我也不好猜。
至于2,位置信息拿不到。。。呃,你给小球额外写一个脚本,让他碰撞的时候传给你左坐标就拿到位置信息了,记得传全局坐标
2025年05月26日 14点05分 3
好吧我再试试[泪]
2025年05月26日 14点05分
我给小球又加了个area2d就能调用参数是node2d的信号了,但是找不到法线😭还是最不到啊,reflect方法还被移除了
2025年05月26日 15点05分
@九智绅士 你要获取哪个向量的法线?
2025年05月26日 15点05分
@mQwQo 有入射向量,想找碰撞位置的法线,但是新版本好像把现成方法删了?
2025年05月26日 15点05分
level 8
九智绅士 楼主
@人类的大敌 老东西快来救一下吧[泪]有入射向量,但是新版本没有现成的获取反射向量的方法了,怎么办怎么办
2025年05月26日 15点05分 4
哪个版本没有?来个截图……[惊讶]引擎左上角菜单栏→帮助→搜索帮助→在搜索框里输入reflect→滚动条拉到最底部,看向量类型的方法
2025年05月26日 15点05分
@人类的大敌 4.4.1版c#的[花心],还能这样看啊
2025年05月26日 15点05分
@九智绅士 [乖]这反而是老版本延续下来的方式,从3时期就能这样看内置方法了(作为老登,因为在贴吧里看了几年,都把这个搜索帮助当常识了)反正我在4.4.1看到了方法,不放截图的话,只能认为在搜索帮助的界面你把右上角的“全部显示”改成了筛选。有入射向量的话,用射线检测就能拿到碰撞位置法线
2025年05月26日 16点05分
@人类的大敌 谢谢,完美解决了[花心][花心]
2025年05月27日 02点05分
level 8
九智绅士 楼主
我还发现一个问题,比如rigibody节点,脚本里如果是你自己写的一个方法,参数是node2d,就不能连接信号,但如果用它现成的信号连接(如_on_body_entered),再把方法写进脚本,把参数改成node2d,就可以正常发信号,我很纳闷为什么要这样
2025年05月26日 15点05分 5
因为他提供的参数是node,如果你写node2d,那么就无法保证正确传递参数,因为他只保证是node,无法更进一步保证是node2d。。。大概是这样
2025年05月26日 15点05分
@mQwQo 可是node什么属性都没有,rigibody弄个这参数的信号干啥啊[泪]
2025年05月26日 15点05分
@九智绅士 保证只要是个节点就可以传递,而且他这样又不影响你使用,比如你在函数里使用(假设节点名为n)n.position,这是node2d才有的,但是他不会报错,除非一个不具有position的节点被传递进来。。。
2025年05月26日 16点05分
level 11
2d节点子节点都是跟随父节点变化的,你要分离就得独立两个节点
对于打砖块这种游戏,小球建议用characterbody配合自计算运动来做,因为rigidbody的物理行为是很难控制的
2025年05月26日 19点05分 6
除非你的游戏就是实际的物理模拟,而不是传统打砖块游戏
2025年05月26日 19点05分
level 2
小球 和 挡板 需要作为两个单独的对象添加到场景中。就像2个角色一样。
2025年05月29日 05点05分 7
1