对于使用物理引擎下的刚体移动大概有四种方式:1.直接设置新的position,但是会导致刚体忽略碰撞,会强行穿过另一个刚体;2.设置速度,但是会有控制不住的效果,就像刹不住车那种;3.设置持续力Force,也会出现控制不住的感觉。4.设置冲量,Impulse,感觉移动的特别慢。总结来讲的话,进行位置的设定效果是最好的,但是需要避免与刚体的穿透问题。所以想问下,如何正确的控制刚体的移动。
###Impulse ApplayForce linerVectory… 以前做好像就是给施加一个力
用力的方式控制移动好像不行,会出现键盘控制不住的感觉。就是刚体一直往前跑,你要按几下后退键才会往回走。
第一种方式其实可以。给两个物体设置不同的group,指定guroup可以碰撞即可。例如角色A 让A的X++++就会一直往前走。碰到墙壁 B 两个group可以碰撞。A是穿不过去的。
源代码可仓考:underGame_战争迷雾(1).rar (1.2 MB)
我可以试一下,之前没有设置group,直接默认碰撞就穿过去了。
我试了下了还是会穿传过去,应该需要对碰撞的刚体进行判断,如果是不能穿过的的刚体类型,需要重设位置,类似边界判断。
具体仓考我给你的demo 另外group注意设置为不同,并且可碰撞
我不太懂js,但我觉得他这里并没有对直接位置做出改变,而是改变hero的线速度,我试了下他这样设置物理的移动,移动基本没问题,但还是会穿过我设的场景边界,而且触发了碰撞事件,说明他们确实碰撞了但是就是穿过去了,目前不能穿过只有以力的方式移动。
我发现一个问题,他这个物理引擎中的碰撞感觉有点问题,对于两个有一定长宽的刚体设置为碰撞时,并不是两个刚体刚相碰时就不允许穿过,而是可以穿过一点点,如果你的刚体宽度够大就穿不过,但是如果宽度较小就穿过去了。因为我的边界是一个多边形区域,这样因为线的宽度太小就穿过去了。但是对于一个宽度足够的刚体,我尝试穿过的时候,最多穿过hero的3/4剩下部分无论怎么按键都穿不过去了。这个就是我说的一直会发生穿过现象的原因。这种问题怎么办,是对刚体的材质需要设置一定的值吗?大佬,你知道这个不。
bilibili 搜索 阿信OL 看他视频做的。 碰撞的时候,角色的碰撞体如果太大,是会出现一点小bug的。把主角的碰撞体调小
使用坐标移动最方便 也最好控制,但是此时会发生刚体穿透;所以可以同时添加冲量或者修改线速度。
move() {
let v = cc.v2(1 , 1)
this.body.linearVelocity = cc.v2(1, 1);
this.node.x += v.x;
this.node.y += v.y;
},
同时进行更改,但是如果速度设置的很快,依然不能使用坐标移动,否则还是会穿透;
