cocos creator 模拟重力爆炸效果

最近在写一个用collider和rigidbody来模拟爆炸一下掉落的效果。(因为是测试版,所以素材很low。仅供参考)

先上层级关系图

场景视图

cocos creator 模拟重力爆炸效果_第1张图片

pot是中间的那个小的图。也是模拟爆炸的中心点随便用了一个素材。

四个T1就是这四个白块。

最后效果是:四个物体往下掉,同时往各自方向炸飞,略微旋转。

思路:掉落跟爆炸效果分开。

1.掉落  代码很简单

       //定义a放在start或者onload里面

this. a=0;

//下面的代码放在update或者计时器里面

this. a++;
this. t1. y-=( this. a* 0.3);
this. t2. y-=( this. a* 0.30);
this. t3. y-=( this. a* 0.3);
this. t4. y-=( this. a* 0.3);

t1 t2 t3 t4指的是四个白块。自己定义就好了。y轴坐标-=。

2.掉落

2.1先获取角度  下面的代码先转换坐标为世界坐标,再通过三角函数来计算角度(三角函数的角度用的是弧度,rotate的话需要弧度转角度,不用的可以略过)

var jiaodu;
var pos02= this. pot. convertToWorldSpaceAR( cc. p( 0, 0));
for( let i= 0; i< 4; i++){
var pos01= this. arr[ i]. convertToWorldSpaceAR( cc. p( 0, 0));
var distance= cc. pDistance( pos01, pos02);
//计算弧度
var hudu= Math. asin(( pos01. x- pos02. x)/ distance);
//弧度转角度
jiaodu= hudu* 180/ Math.PI;

           }

2.2模拟爆炸的冲力(这一段放在上面的循环里面,为例方便理清思路就单独提出来)

this. powernum= 600*( distance/ 400);
//线速度
if( pos01. x- pos02. x< 0){
//如果物体在中心点的左边,x方向冲力是反方向的
this. arr[ i]. getComponent( cc. RigidBody). linearVelocity = cc. v2( this. powernum* Math. cos( hudu)*(- 1), this. powernum* Math. sin( hudu));
} else{
this. arr[ i]. getComponent( cc. RigidBody). linearVelocity = cc. v2( this. powernum* Math. cos( hudu), this. powernum* Math. sin( hudu));

}

2.3模拟爆炸造成的旋转(一样的放在循环中)

 

this. arr[ i]. getComponent( cc. RigidBody). angularVelocity = 200*( distance/ 400)* Math. cos( hudu);

--------------华丽的分割线--------------------------------------------------------
到此结束。

不会弄动图,所以效果得大家自己测试了。

有什么问题或者不懂得可以留言,另外有高手的话欢迎指导!刚入坑没多久。



你可能感兴趣的:(cocoscreator)