一、问题起源

变大之后的Mario的b2Body的宽高是16×32,而障碍物允许通过的高度只有16,游戏里的效果是,Mario借助惯性,在下蹲时滑行通过障碍物。(比如world1-2中开头的地方)。

若只滑倒障碍物宽度的一半,根据玩家的操作有2中情况:

1. 松开“下蹲”键恢复站立姿势时,mario自动向右滑出障碍物范围;

2. 在按着下蹲键的同时,按下“跳跃”键,mario顶破上方石块并卡在障碍物的空里。

二、解决方法

1.仔细观察原游戏效果的时候发现,下蹲的时候确实是重建了一个b2Body高度只有原来一半的新刚体。

销毁b2Body,重建一个高度较小、可以通过障碍物的新刚体,那么mario会在初始碰撞障碍物的时候就停下来,而且由于删除了b2Body,mario不会有任何运动,但可以试试给新建的刚体一个作用力,人为的让它运动。但是这样mario的运动效果可能不连贯。

2.b2Body的b2Fixture属性里面有个sensor,它的作用是:使mario可以检查到碰撞但不会发生实际的碰撞效果。可以不用销毁原来的刚体,宽高不变。

当mario和低矮障碍物开始碰撞之前,将mario设置为sensor,即setSensor(true)。

这时,mario不会和障碍物发生实际碰撞,继续滑行直到停下来。此时根据上面的2种情况分别处理:

上面方法不行。。。。不能碰撞的话,mario会从平台上掉落。


此时根据上面的2种情况分别处理:

情况1:mario仍然是sensor,给它施加一个向右的作用力(applyImpulse),让它滑出障碍物范围。

情况2:删除较小的刚体,重建b2Body,这样mario就会和障碍物碰撞,顶破砖块。

Box2D实现Super Mario之关键技术分析——mario下蹲通过低矮障碍物相关推荐

  1. 服务机器人关键技术分析

    前言   回顾2014年刚进入服务机器人行业,我们公司接的第一个订单是10台送餐机器人,那时候我和搭档都是刚刚研究生毕业,我们以伙伴公司的名义招了一位嵌入式工程师和一位机械结构设计工程师.无知者无畏, ...

  2. 核心网upf作用_5G核心网关键技术分析

    5G核心网关键技术分析 陈莉 辽宁邮电规划设计院有限公司,辽宁 沈阳 110179 摘要:5G核心网相对于4G网络在架构.功能.业务能力提供方面有较大的革新,引入了新的关键技术如SBA.支持边缘计算. ...

  3. TMS320F28x上RTOS移植关键技术分析

    TMS320F28x上RTOS移植关键技术分析 详细分析TI公司TMS320F28x系列DSP的启动过程:说明BootROM中程序的运行过程,介绍C编译器和DSP/BIOS的工作细节:探讨DSP的中断 ...

  4. 智能语音人机交互产业链及关键技术分析

    人机交互是一门计算机科学,主要研究关于设计.评价和实现供人们使用的交互计算系统以及相关现象的科学.人机交互的发展经历了以下几个阶段:手工作业阶段.作业控制语言与交互命令语言阶段.图形用户界面(GUI) ...

  5. 【转】嵌入式系统关键技术分析与开发应用

    嵌入式系统关键技术分析与开发应用 来自http://www.chinavideo.org/index.php?option=com_content&task=view&sectioni ...

  6. Linux内存技术分析(下)

    Linux内存技术分析(下) 五. 内存使用场景 out of memory 的时代过去了吗?no,内存再充足也不可任性使用. 1.内存的使用场景 · page管理 · slab(kmalloc.内存 ...

  7. 中国移动:5G蜂窝IoT关键技术分析

    来源:5G 本文讨论了蜂窝物联网的技术现状,针对增强机器类通信和窄带物联网技术标准,提出了2种现网快速部署方案,并进一步指出了C-IoT面向5G的演进路径.该路径充分考虑了5G网络中网络功能虚拟化.软 ...

  8. 实时视频应用之QoS关键技术分析

    本文转自:http://www.vccoo.com/v/ddf5f7 随着WebRTC标准的逐步推广,实时音视频通讯技术受到越来越多公司和技术人员的关注.对于交互式音视频应用而言,稳定.低延时.通话质 ...

  9. 分布式网络爬虫关键技术分析与实现一网络爬虫相关知识介绍

    搜索引擎发展的历史过程与发展现状 1搜索引擎的发展的历史 1990年以前,没有任何人能搜索互联网.所有搜索引擎的祖先,是1990年由Montreal的McGill University学生Alan E ...

最新文章

  1. 【C++ STL】vector库使用方法
  2. 简化PHP开发的10个工具
  3. vue项目使用eslint
  4. 数据库简单实用(一)
  5. SpringMVC流程架构图
  6. python创建person类用printinfo方法_Python学习期刊Day11类和对象(2),日记,与,下
  7. 实现Android的消息通知栏
  8. 如果一个普通人想创业或是干点副业赚钱,应该去赚谁的钱?
  9. 利用XMLHTTP无刷新添加数据之Post篇(转)
  10. csrss.exe介绍
  11. Python 中的决策树
  12. 路由表原理以及数据包进入路由器,路由器的处理
  13. VMware WorkStation虚拟机的安装及使用
  14. 2021真无线耳机推荐,必须了解的真无线蓝牙耳机
  15. 使用计算机翻译软件,memoQ(计算机翻译工具)
  16. 这10个问题帮你搞清楚SaaS是什么!
  17. Vatti clipping 算法介绍
  18. IP地址后面跟/(斜线)+数字含义
  19. “终端有鸿蒙,云端有安超!” 鸿蒙落地,安超有什么新动作?
  20. 【厚积薄发系列】C++项目总结20—pdb和dump服务器部署以及结合windbg自动下载

热门文章

  1. unknown error: Chrome failed to start: crashed 解决方法
  2. 【资料整理】scribe安装配置
  3. 非root用户安装nginx
  4. 手把手教你使用 VuePress 搭建个人博客
  5. MySQL索引原理及慢查询优化
  6. 智能编撰:使用神经网络协助编写电子邮件
  7. ajax跨域,这应该是最全的解决方案了 1
  8. 它们都是苹果公司背后那些英国科技 “力量”
  9. Eric Pement的单行awk命令收集
  10. 查询SQL Server Index上次Rebuild时间