关于box2D多边形形状
用过cocos2d的朋友大家一定都知道box2D这么一个物理引擎。用过box2D的同学也一定知道box2D中有一个物体形状的东西。下边大家听我说一下这个box2D中形状相关的一点东西吧。
麻烦想转载的朋友注明一下转载的出处:http://fengmm521.blog.163.com/blog/static/25091358201322445347106/
box2D在使用之前都要先建一个世界对象的实例。而这个世界对象实例主要有两个参数,一个是重力失量,一个是物体是否眠。
有了这个世界之后,我们才可以通过这世界来创建世界中要模拟的物体。当然了,创建物体之前一定要先定义一下自已要创建的物体了。定义好了之后,把自已的物体定义当参数传给世界,世界便会创建一个物体了。这个时候物体其实只有一个世界坐标,别的什么参数也没有。
没有形状,我们也看不到物体,物体没有形状,自然物体就不能相互作用了。所以接着就是我们今天要聊的主题了----形状!
如果有人用过形状定义数组,一定知道,box2D中定义的多边形形状要求必须是凸多边形的。
什么,你不知道什么是凸多边形什么是凹多形边,好吧,我释一下。
1.多边形基础知识
凸多边形的性质:
1.凸多边形的内角均小于180°,边数为n(n为整数且n大于2)的凸多边形内角和为(n-2)×180°,但任意凸多边形外角和均为360°,并可通过反证法证明凸多边形内角中锐角的个数不能多于3个。
2.凸多边形所有对角线都在内部,边数为n的凸多边形对角线条数为n(n-3)/2,其中通过任一顶点可与其余n-3个顶点连对角线。
相对应的,凹多边形,自然就是会有一个内角大于180°多边形了。
![](http://img1.ph.126.net/cYtQXdIBXAUvCRxoWRAcxw==/6598109904657142465.jpg)
![](http://img1.ph.126.net/OxkNpnXkiEM1FxW7x5MFvw==/6597308360680205326.jpg)
什么,你理解不了上边这句话的意思。好吧。你可以在纸上试着画一下,先画一个凸多边形,再画一个凹多边形。然后试着看,你只把多边形的顶点连在一起来组成一个没有重叠三角形的多边形。
![](http://img0.ph.126.net/Zme8pAKyaZkLtpBDVf4MBA==/6597683294145776511.jpg)
![](http://img0.ph.126.net/Rqa0dflwMGjqL8rx5obCGw==/6597827330169025116.jpg)
这里还要提一下,不管是OpenGL还是OpenGL ES绘制的面是有正面和反面一说的,组成面的绘制顺序是逆时针的面是正面,自然然顺时针的面就是反面了。其实这两个面是完全不同的两个面,这篇文章涉及不到,我们不提了,有兴趣的朋友看兰宝书吧。
3.PhysicsEditor工具中关于形状的plist文件解读。
我们先从精灵图片开始。下边是我自已画的一个小鸡吃米图中的小鸡。
![](http://img2.ph.126.net/gwRPyrUIKUt4YaVbm2uhYQ==/6597629418076017689.jpg)
![](http://img2.ph.126.net/DGhSrE4sx7KX7tzXLgmtlw==/6597971366192257871.jpg)
![](http://img2.ph.126.net/trkGwBdNQttu8wILxZKevQ==/6598116501726904301.jpg)
![](http://img1.ph.126.net/n1UAde7nbKqD3QlVJEOyAg==/6598288025540844754.jpg)
![](http://img1.ph.126.net/lgOq5OH7XlHxAkgNaXgBhg==/6598291324075735780.jpg)
![](http://img2.ph.126.net/J08j-BThvYNUZNUwMnSMDA==/6597997754471332430.jpg)
有两种形状解析,一种是多边形,一种是圆。很明显,我的这个小鸡吃米图生成的plist文件形状是以多边形绘制的。
关于box2D多边形形状相关推荐
- Box2d源码学习十三b2Collision之碰撞(下) 具体形状间的碰撞的实现
本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8441463 Box2d中,要形状间实现碰撞,必须两个碰 ...
- html5游戏开发box2djs,Box2D.js简易示例
Box2dWeb example //在页面加载完毕后启动整个Box2D程序 function init() { //简化缩写各个对象名称 var b2Vec2 = Box2D.Common.Math ...
- Box2D v2.0.1 用户手册
Box2D v2.0.1 用户手册 原文:Box2D v2.0.2 User Manual 译者:Aman JIANG(江超宇),翻译信息. 1. 导言 1.1 关于 Box2D 是一个用于游戏的 2 ...
- Cocos2d之Box2d基础知识
一.box2d基础知识 1.关于 Box2D 是一个用于游戏的 2D 刚体仿真库.从游戏的视角来看,物理引擎就是一个程序性动画(procedural animation)的系统,而不是由动画师去移动你 ...
- Cocos2d-X Box2D内容讲解
一.box2d基础知识 1.关于 Box2D 是一个用于游戏的 2D 刚体仿真库.从游戏的视角来看,物理引擎就是一个程序性动画(procedural animation)的系统,而不是由动画师去移动你 ...
- Box2D翻译_第二章
本文是对Box2D v2.1.2 manual中文翻译(现在网上流行的一个中文翻译是针对以前版本的,跟最新的2.1.2版有些不对应)的第二章.持续更新中...... 2. Hello Box2D 在B ...
- box2d 碰撞检测_Box2d新系列 第四章 碰撞模块
注:此文章翻译自Box2D v2.2.0用户手册,仅供学习参考. 4.1 关于 碰撞模块包括了形状以及操作形状的方法.模块也包括了动态树(dynamic tree)和broad-phase算法来提高 ...
- Box2D一:基础知识
一.box2d基础知识 1.关于 Box2D 是一个用于游戏的 2D 刚体仿真库.从游戏的视角来看,物理引擎就是一个程序性动画(procedural animation)的系统,而不是由动画师去移动你 ...
- (老文章)Box2D新手入门顺阶教程
注意: 本教程只适用于BOX2D 2.0以下版本,由于2.0版API的改动,所以有部分代码会并不适用.但是主要思想还是一样的. 一. HelloWorld 开始之前,我假想你已经看过了HelloWor ...
最新文章
- python输出等腰三角形代码_酷呆了!Python开发web应用的一些中级技巧
- VS Code 的常用快捷键和插件
- mysql主主同步配置_MySQL 主主同步配置步骤
- 微信开发必看,使用.Net Core 开发微信跨平台应用
- java 易变变量_关于java:易变变量和其他变量
- 用户登录功能:说简单也困难
- php 数据类型 map,es6中Set和Map的对比介绍(附代码)
- GNSS相关开源项目整理
- Kylin中cube优化
- 分槽ALOHA协议仿真
- html 的smap标签,SMap.Label
- mysql数据库报错1146_数据库错误代码1146 - 本地与在线
- 电脑开机密码,强制修改,覆盖原密码
- Nuxt - 自定义页面布局,<Nuxt /> 个性化多套模板(一个项目内既要有用户正常浏览的普通页面,又要存在后台管理系统布局的页面)
- 35岁以上的那些测试员何去何从?
- appvlv中偶有不爽
- 【全球排名前100的英文歌】
- C语言、C++与Java分别实现猜数字小游戏
- ssm明亮眼镜店网站毕业设计(附源码、运行环境)
- 微信小程序开发之——个人中心-介绍(1)
热门文章
- 少儿编程 电子学会机器人等级考试一级真题解析(选择题)2019-03
- 软文营销的间接作用有哪些?
- CAU 人工智能II(2022春) 课程期末复习 - 大纲整理
- 文华财经论坛上看到一些牛人
- 三菱Q系列PLC ,QD77MS16走总线控制伺服项目,实际 应用的, 程序结构清晰明了,通俗易懂,8个伺服,PLC程序有完整的注释
- linux python m2crypto,python – 如何在Ubuntu上安装M2Crypto?
- 销售困局:客户既要好的又嫌贵如何破局
- PIC16F877A与Proteus仿真-GPIO寄存器与配置
- XNA游戏:精灵Sprite的概念
- 批量下载sra文件linux,NCBI下载SRA数据的4种方法