问题描述
我想为移动设备创建一个类似 aim Lab 的“Circle Shot”这样的反应游戏。因此,用户将需要点击出现的圆圈,而不是拍摄。如果我想让它尽可能简单,我应该为圆圈使用哪个节点?精灵还是纹理按钮?
我还想问一下如何包含圆圈,这样它们就不会产生越界。我使用网格容器还是其他东西?
解决方法
为什么?
这个问题在某些方面很奇怪:
- 为什么要使用 TextureButton?
TextureButton实际上是一个Control节点,Control节点主要用于UI场景。
我并不是说使用 TextureButton 来创建游戏而不是创建 UI 是不可能的,但我的意思是这不是做到这一点的最佳方式。 - 为什么要使用 Sprite?
您不能为此使用 Sprite,因为您无法点击它。
Sprite 用例用于创建动画,只需在场景中放一张图片,也许还有背景用例等等。
那又怎样?
我主要建议使用:
-
KinematicBody2D:此节点是 Node2D 类型,您可以通过附加脚本轻松在屏幕上移动它。
您可以为它模拟物理并使用 move_and_slide()、move_and_collide() 等函数移动它。 - RigidBody2D:这个节点也是一个 Node2D 类型,你可以很容易地模拟质量、重力和重量,让它有一个不能移动的物体本身,但可以通过环境力量(如冲击、重力或......)移动。
怎么样?
这些节点中的每一个都继承自具有 3 个信号的 CollisionObject2D 节点:
- mouse_entered():当鼠标指针(在本例中为手指)进入该对象的任何形状时发出。
- mouse_exited():当鼠标指针(在这种情况下,手指)退出此对象的所有形状时发出。
通过这些信号,您可以了解字符手指是否在圆圈内。
重要说明:我实际上并没有亲自测试过这个,因为我不是在移动设备上开发的,但由于我在为 PC 开发游戏方面的经验很少,这些应该可以。
建议
还要始终关注最新的稳定 godot documentation,看看是否有其他更好的解决方案或更好的节点来处理您的情况。