关于Flappy bird中水管与小鸟的碰撞
关于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中水管与小鸟的碰撞相关推荐
- python之flappy bird(飞扬的小鸟)小游戏分享,内附源码哦~
导语: 哈喽,哈喽~今天小编又来分享小游戏了--flappy bird(飞扬的小鸟),这个游戏非常的经典,游戏中玩家必须控制一只小鸟,跨越由各种不同长度水管所组成的障碍.这个游戏能对于小编来说还是有点 ...
- The Angry Flappy Bird - 愤怒的飞翔小鸟
您是否在飞翔的小鸟flappy bird中被管道虐得很惨,您是否被它影响了正常生活?复仇的机会终于来了,飞翔的小鸟愤怒了! [下载地址] ios appstore下载: https://itunes. ...
- 【新手上路】Java必备小游戏——Flappy Bird(飞翔的小鸟)
<飞翔的小鸟>是一款曾经比较火热的小游戏,本文可以带你你从零开始,一步一步的开发出这款小游戏.如果你只是刚入门java的新手,不用担心,只要你简单掌握了该游戏所需要的javase基础知识, ...
- java小游戏------Flappy Bird(飞翔的小鸟含源码)
前言:本小游戏可作为java入门阶段收尾创作. 需:掌握面向对象的使用,了解多线程和异常处理等知识. 如上图所示:我们需要绘制背景,小鸟,障碍物,当然也包括游戏开始界面以及死亡界面. 一:思路解析: ...
- Pygame开发Flappy Bird小游戏(下)
我们继续进行设计,根据上节,我们已经设计了小鸟类和管道类.剩下的就是得分和碰撞监测.下面就逐一进行设计. 根据游戏设想,当小鸟飞过管道,玩家得分加1.这里对于飞过管道的逻辑做了简化处理:当管道移动到窗 ...
- 使用Pygame开发flappy bird
使用Pygame开发flappy bird 1.Pygame简介 Pygame是跨平台Python模块,专为电子游戏设计,包含图像.声音等,创建在SDL(simple DirectMedia Laye ...
- Pygame开发Flappy Bird小游戏(上)
Flappy Bird是一款鸟类飞行游戏,由云娜河内独立游戏开发者阮哈东(Dong Nguyen)开发.在Flappy Bird这款游戏中,玩家只需要一根手指来操控,单机手机屏幕,小鸟就会往上飞,不断 ...
- flappy bird 的盈利模式 谷歌是幕后赢家
Flappybird的变现途径仅靠游戏内的banner广告.在游戏一开始进行时,以及一条生命挂了的时候,Flappy bird都会在界面最上端弹出一个banner. 有人认为,游戏内弹banner的方 ...
- 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目
课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...
最新文章
- 配置mysql主从服务器
- 理解 Delphi 的类(十一) - 深入类中的方法[8] - 抽象方法与抽象类
- boost::hana::make_map用法的测试程序
- mysql 分析函数_MySQL分析函数实现
- Python3自带HTTP文件传输服务(局域网文件共享)
- 第45课 蝴蝶效应-动动脑 第3题 《小学生C++趣味编程》
- PHP正则表达式实例汇总
- CentOS7中编译安装redis5.0
- 免费查题合集大推荐,付费根本不存在的!
- HTTP请求与响应协议
- uploadify php完整,uploadify.php
- mapguide 安装调试
- vivoy85a参数配置_vivoY85A基本配置参数?
- go、JS AES(CBC模式)加密解密兼容
- 【使用Unity开发Windows Phone上的2D游戏】(1)千里之行始于足下
- 【附源码】计算机毕业设计java在线学习交流平台设计与实现
- kali linux开机黑屏只有鼠标可以移动
- java实现hbase表创建、数据插入、删除表
- 联合循环—25(了解PID原理图1)
- DockOne微信分享(一零五):度量驱动的DevOps转型
热门文章
- 出成绩了. 全国大学生数学建建模浙江赛区 评审得奖情况
- 对话阿里云异构计算掌舵人:人工智能爆发三要素
- RTKLIB超详细调试(VS),手把手教你全过程~(以PPP为例)第一篇——读取配置文件、精密星历、精密钟差篇
- 分享66个ASP.NET学校班级源码,总有一款适合您
- html实现扫雷游戏
- js原生后代选择器_JavaScript DOM查询,原生js实现元素子节点的获取
- 高亮word特定关键字(python)
- 信捷PLC 流程指令STL,S使用
- OpenDDS开发人员指南中文版3.23(0)序言
- Excel 导出8000401a 错误及解决办法