cocos2d-js中chipmunk简单碰撞检测

主要是有以下三个步骤:

1.碰撞检测时检测的是物体的形状是否有碰撞,所以是在定义形状的时候设置碰撞信息:

ball.setCollisionType(1) ;

walls[i].setCollisionType(2) ;

2.实现碰撞时回调的函数

   arbiter:封装了碰撞的形状和它们的碰撞数据

arbiter常用的方法:

cpFloat cpArbiterGetElasticity(const cpArbiter *arb)

void cpArbiterSetElasticity(cpArbiter *arb, cpFloat value)

计算碰撞对的弹性。在preSolve()回调中设定该值将会覆盖由空间计算的值。默认计算会将两个形状的弹性相乘。

cpFloat cpArbiterGetFriction(const cpArbiter *arb)

void cpArbiterSetFriction(cpArbiter *arb, cpFloat value)

计算碰撞对的摩擦力。在preSolve()回调中设定该值将会覆盖由空间计算的值。默认计算会将两个形状的摩擦力相乘。

cpVect cpArbiterGetSurfaceVelocity(const cpArbiter *arb)

void cpArbiterSetSurfaceVelocity(cpArbiter *arb, cpVect value)

计算碰撞对的表面速度。在preSolve()回调中设定该值将会覆盖由空间计算的值

3.管理碰撞

例子:

	<span style="white-space:pre">	</span>//四个回调函数
		var collisionBegin = function(arbiter,space){
			cc.log("begin") ;
			var shapes = arbiter.getShapes() ;
			var typeA = shapes[0].collision_type ;
			var typeB = shapes[1].collision_type ;
			if(typeB == 1)
				cc.log("ball to ball") ;
			else
				cc.log("ball to wall....") ;
			return true ;
		};
		var collisionPre = function(arbiter,space){
		//	cc.log("pre") ;
			return true ;
		};
		var collisionPost =function(arbiter,space){
		//	cc.log("post") ;
		};
		var collisionSeparate = function(arbiter,space){
		//	cc.log("separate") ;
		};
 		//管理碰撞
		this.space.addCollisionHandler(1,1,
				collisionBegin.bind(this) ,
				collisionPre.bind(this) ,
				collisionPost.bind(this) ,
				collisionSeparate.bind(this) 
		)
			this.space.addCollisionHandler(1,2,
				collisionBegin.bind(this) ,
				collisionPre.bind(this) ,
				collisionPost.bind(this) ,
				collisionSeparate.bind(this) 
		)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值