关于Flappy bird中水管与小鸟的碰撞

前言

在开发游戏的老王的文章5.1无尽水管滚滚来link中出现了三个碰撞体,浅谈一下我对三个碰撞体的看法。


提示:以下是本篇文章正文内容,下面案例可供参考

一、碰撞节点

在此只简单阐述RigidBody2D节点、Area2D节点和StaticBody2D节点。

关于RigidBody2D节点,该节点不由制作者自己支配,由物理引擎操控,可以向它施加外力来改变速度。例如在FlappyBird中,我们可以改变RigidBody2D节点中的Gravity Scale值从而达到让小鸟落下的更快的目的。

关于Area2D节点,该节点没有“形体”,可以理解为物体可以穿过它,就想一团气体一样,物体与他发生了碰撞但可以穿过它。例如FlappyBird中,小鸟每穿过一根水管就会得一分,实现得分方式就可以使用Area2D节点,RigidBody2D节点与它发生碰撞,系统会记录并给出反馈。

看雨StaticBody2D节点,该节点可以用作大型的墙面。例如FlappyBird中水管,以及地面,天花板都是用这个节点。

二、关于节点中心点

通俗来说可以理解为RigidBody2D节点(同理可以是Area2D节点,StaticBody2D节点)是整个物体的核心,Sprite是物体的灵魂,而CollisionShape是物体的身体,当核心灵魂身体三者重合,也就是RigidBody2D节点、Sprite节点以及CollisionShape节点重合时,才是一个完整物体。

让鼠标悬浮在节点可以看出该节点是什么节点。

着重说一下几个节点的中心点的问题。

注:最上方的pipe是一个Node2D节点
StaticBody2D up节点、StaticBody2D节点和Area2D scorearea节点是pipe(也就是Node2D节点)的子节点,那么移动Node2D节点的中心,它的所有子节点包括子节点的子节点都会跟着移动。
所以在我们做这种有很多子节点的工程时,应该最先调好最大的节点也就是父节点,然后一层一层的去调整剩下子节点的位置(可以利用Transform菜单里position中x,y的值进行细致的调节)。
这时候又有一个小技巧:父节点的中心,是它的子节点的原点以此建立平面直角坐标系。那么想要让CollisionShape2D节点和Sprite up节点的中心与StaticBody2D up 节点的中心重合,就可以改动position中x、y的值都为0,这样三个节点的中心就重合在一起了。

三、制作小鸟穿过水管的逻辑

现在我们的小鸟可以很自然的上下飞动,那怎么才能让它飞过水管呢?

首先我们要制作一个上下都有的水管,小鸟穿不过去水管而是会和水管发生碰撞,所以我们选择StaticBody2D节点来制作水管。

第二,小鸟成功飞过水管会得分,那么飞过水管这一动作需要得到反馈,我们可以使用没有“形体”的Area2D节点来当作反馈的装置。

第三,小鸟可能会飞的过高或者过低掉下去,这时候我们就要往天空和地面加上碰撞体让小鸟不会飞出显示区,这个碰撞节点就可以选择可以用作大型墙面的StaticBody2D节点。

还有后面无限的水管会用到timer节点,在此不多做阐述。
注:这些步骤会需要代码来进行功能的完善,代码部分可以参考最上方的链接)

以上都是自己的理解,如有错误还请大家指出。
感谢阅读

关于Flappy bird中水管与小鸟的碰撞相关推荐

  1. python之flappy bird(飞扬的小鸟)小游戏分享,内附源码哦~

    导语: 哈喽,哈喽~今天小编又来分享小游戏了--flappy bird(飞扬的小鸟),这个游戏非常的经典,游戏中玩家必须控制一只小鸟,跨越由各种不同长度水管所组成的障碍.这个游戏能对于小编来说还是有点 ...

  2. The Angry Flappy Bird - 愤怒的飞翔小鸟

    您是否在飞翔的小鸟flappy bird中被管道虐得很惨,您是否被它影响了正常生活?复仇的机会终于来了,飞翔的小鸟愤怒了! [下载地址] ios appstore下载: https://itunes. ...

  3. 【新手上路】Java必备小游戏——Flappy Bird(飞翔的小鸟)

    <飞翔的小鸟>是一款曾经比较火热的小游戏,本文可以带你你从零开始,一步一步的开发出这款小游戏.如果你只是刚入门java的新手,不用担心,只要你简单掌握了该游戏所需要的javase基础知识, ...

  4. java小游戏------Flappy Bird(飞翔的小鸟含源码)

    前言:本小游戏可作为java入门阶段收尾创作. 需:掌握面向对象的使用,了解多线程和异常处理等知识. 如上图所示:我们需要绘制背景,小鸟,障碍物,当然也包括游戏开始界面以及死亡界面. 一:思路解析: ...

  5. Pygame开发Flappy Bird小游戏(下)

    我们继续进行设计,根据上节,我们已经设计了小鸟类和管道类.剩下的就是得分和碰撞监测.下面就逐一进行设计. 根据游戏设想,当小鸟飞过管道,玩家得分加1.这里对于飞过管道的逻辑做了简化处理:当管道移动到窗 ...

  6. 使用Pygame开发flappy bird

    使用Pygame开发flappy bird 1.Pygame简介 Pygame是跨平台Python模块,专为电子游戏设计,包含图像.声音等,创建在SDL(simple DirectMedia Laye ...

  7. Pygame开发Flappy Bird小游戏(上)

    Flappy Bird是一款鸟类飞行游戏,由云娜河内独立游戏开发者阮哈东(Dong Nguyen)开发.在Flappy Bird这款游戏中,玩家只需要一根手指来操控,单机手机屏幕,小鸟就会往上飞,不断 ...

  8. flappy bird 的盈利模式 谷歌是幕后赢家

    Flappybird的变现途径仅靠游戏内的banner广告.在游戏一开始进行时,以及一条生命挂了的时候,Flappy bird都会在界面最上端弹出一个banner. 有人认为,游戏内弹banner的方 ...

  9. 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目

    课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...

最新文章

  1. 配置mysql主从服务器
  2. 理解 Delphi 的类(十一) - 深入类中的方法[8] - 抽象方法与抽象类
  3. boost::hana::make_map用法的测试程序
  4. mysql 分析函数_MySQL分析函数实现
  5. Python3自带HTTP文件传输服务(局域网文件共享)
  6. 第45课 蝴蝶效应-动动脑 第3题 《小学生C++趣味编程》
  7. PHP正则表达式实例汇总
  8. CentOS7中编译安装redis5.0
  9. 免费查题合集大推荐,付费根本不存在的!
  10. HTTP请求与响应协议
  11. uploadify php完整,uploadify.php
  12. mapguide 安装调试
  13. vivoy85a参数配置_vivoY85A基本配置参数?
  14. go、JS AES(CBC模式)加密解密兼容
  15. 【使用Unity开发Windows Phone上的2D游戏】(1)千里之行始于足下
  16. 【附源码】计算机毕业设计java在线学习交流平台设计与实现
  17. kali linux开机黑屏只有鼠标可以移动
  18. java实现hbase表创建、数据插入、删除表
  19. 联合循环—25(了解PID原理图1)
  20. DockOne微信分享(一零五):度量驱动的DevOps转型

热门文章

  1. 出成绩了. 全国大学生数学建建模浙江赛区 评审得奖情况
  2. 对话阿里云异构计算掌舵人:人工智能爆发三要素
  3. RTKLIB超详细调试(VS),手把手教你全过程~(以PPP为例)第一篇——读取配置文件、精密星历、精密钟差篇
  4. 分享66个ASP.NET学校班级源码,总有一款适合您
  5. html实现扫雷游戏
  6. js原生后代选择器_JavaScript DOM查询,原生js实现元素子节点的获取
  7. 高亮word特定关键字(python)
  8. 信捷PLC 流程指令STL,S使用
  9. OpenDDS开发人员指南中文版3.23(0)序言
  10. Excel 导出8000401a 错误及解决办法