查看: 164|回复: 8

求助,官方文档的“第一个游戏”,我无法新建信号

[复制链接]

2

主题

4

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2021-5-14 17:18:45 | 显示全部楼层 |阅读模式
我看的文档地址:
https://docs.godotengine.org/zh_CN/stable/getting_started/step_by_step/your_first_game.html
我跟着教程做,然后并没有出现图中的部分。



然后我卡在 这里了
-------------------------------------------------------------------------------------------------------------------------

你可以看到 Player 的信号列表。找到 hit 信号并双击(或右键选择“连接信号...”)。我们将在打开的界面创建 game_over 函数,用来处理游戏结束时发生的事情。在 连接信号到方法 窗口底部的 接收方法 框中键入 game_over 。添加以下代码,以及 new_game 函数以设置新游戏的所需内容:

------------------------------------------------------------------------------------------------------------

然后这个  walk  也提示 bug。。。求救,






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

2

主题

9

帖子

54

积分

注册会员

Rank: 2

积分
54
发表于 2021-5-14 21:15:46 | 显示全部楼层
楼主,第一个signal问题我不知道,第二个问题I know
你第二行 ¥AnimationSprite.aniamtion 前面要缩进,就是打一个键盘上的tab键
不然系统会以为if xxx:这个语句是和 ¥AnimationSprite.animation 同样等级的
所以if就不会包含animation,你这一段都是这样,这样子if就什么都没包含,成了空函数报错了

底下那行红字是 indented block 让你缩进的,你打个空试一试
signal那个语句能截个图吗

回复

使用道具 举报

0

主题

4

帖子

48

积分

新手上路

Rank: 1

积分
48
发表于 2021-5-14 23:12:27 | 显示全部楼层
似乎_on_Player_body_entered函数中的参数body要加个"_"下划线才会运行正常,不知道加这个下划线是为了表示私有属性还是什么的,感觉dgscript有点奇怪,像python又像其它的。
func _on_Player_body_entered(_body):
        hide()
        $CollisionShape2D.set_deferred("disable", true)
        #$CollisionShape2D.disable = true
        emit_signal("hit")
回复

使用道具 举报

2

主题

4

帖子

18

积分

新手上路

Rank: 1

积分
18
 楼主| 发表于 2021-5-15 09:00:50 | 显示全部楼层
bakc 发表于 2021-5-14 21:15
楼主,第一个signal问题我不知道,第二个问题I know
你第二行 ¥AnimationSprite.aniamtion 前面要缩进,就 ...

感谢提醒,缩进已ok。
后来我根据教程重做一遍,,,signal  又正常了。。。估计是我之前文件名命名问题。。
回复

使用道具 举报

2

主题

4

帖子

18

积分

新手上路

Rank: 1

积分
18
 楼主| 发表于 2021-5-15 09:03:04 | 显示全部楼层
淦水游龙 发表于 2021-5-14 23:12
似乎_on_Player_body_entered函数中的参数body要加个"_"下划线才会运行正常,不知道加这个下划线是为了表示 ...

      我没动这部分。。后面重做一遍是做好的了。。。。     
回复

使用道具 举报

0

主题

4

帖子

48

积分

新手上路

Rank: 1

积分
48
发表于 2021-5-16 11:46:09 | 显示全部楼层
其实我做这个游戏遇到另一个问题,游戏运动行如果两个小怪靠得很近,Player会和两个小怪都发生碰撞检测,会发出两次hit信号,执行两次game over,看了文档也找不到解决方法。
回复

使用道具 举报

2

主题

9

帖子

54

积分

注册会员

Rank: 2

积分
54
发表于 2021-5-16 22:02:12 | 显示全部楼层
淦水游龙 发表于 2021-5-16 11:46
其实我做这个游戏遇到另一个问题,游戏运动行如果两个小怪靠得很近,Player会和两个小怪都发生碰撞检测,会 ...

我记得文档里有写gameover完把碰撞禁用或者删除小怪的
回复

使用道具 举报

0

主题

4

帖子

48

积分

新手上路

Rank: 1

积分
48
发表于 2021-5-17 23:52:58 | 显示全部楼层
bakc 发表于 2021-5-16 22:02
我记得文档里有写gameover完把碰撞禁用或者删除小怪的

是有禁用碰撞的,但是我感觉两个小怪靠得很近时,碰撞检测会把两个collisionshape都纳入检测的行为中,处理完碰撞之后才执行禁用碰撞。
回复

使用道具 举报

0

主题

4

帖子

48

积分

新手上路

Rank: 1

积分
48
发表于 2021-5-19 23:12:30 | 显示全部楼层
淦水游龙 发表于 2021-5-17 23:52
是有禁用碰撞的,但是我感觉两个小怪靠得很近时,碰撞检测会把两个collisionshape都纳入检测的行为中,处 ...

太奇葩了,我把发送信号的代码改在禁用碰撞前一句执行,运行就没出现重复两次发送信号的情况了。然后高潮来了,我又改回原来的代码顺序,保存重启后再执行游戏,游戏也没再出现问题,所以我现在不知道这是怎么回事,是引擎的问题还是我操作的问题。
func _on_Player_body_entered(_body):
        hide()
        #emit_signal("hit")  # 《---   碰撞禁用前
        $CollisionShape2D.set_deferred("disabled", true)
        emit_signal("hit")    # 《---   碰撞禁用后
       
回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Godot中文社区

GMT+8, 2021-6-18 20:02 , Processed in 0.209189 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2020, Godoter.top

快速回复 返回顶部 返回列表