环形物体如何做到正确的3D穿透?

  • Creator 版本: 3.2.0

  • 目标平台:小游戏真机

  • 3D引擎:ammo

  1. 给Trous环形物体使用MeshCollider,当设置Convex为true的时候,发现开启 convex 后使用的是凸包,用于近似表达圆环,中间的窟窿会被填补上,导致其他物体无法穿过环中间的孔。

  2. 如果不设置Convex为true,当环在重力作用调到地下会穿过地板。

我的目地是这个运动的环可以传过其他物体(物体冲中间孔穿过),环掉落的时候可以和地面碰撞停在地面上。想请教各位是不是该功能正常方案是不是无法实现。。。

没有MeshCollider的时候,用一堆球模拟,可以写个脚本去加。。。

牛逼,十分感谢!!

突然发现还有一个问题,物体在重力作用掉落地面,这个时候把手机倒过来,物体不会反向掉落,重力的方向好像没有随手机屏幕跟着变化。这个问题要怎解决??

这个肯定不会啊,你要根据手机陀螺仪,代码去设置重力方向

噢噢,我以为点了开启重力就可以的,十分感谢!

simple-throw.zip (14.0 KB)

image

我用力抛出,发现也是存在这种穿透的情况

半个圈插进了墙里

WX20210828-220424
这些圈旋转碰撞后自己套在了一起,这个刚体的会穿透,也不知道是不是这3D连基本的功能都搞不了

运动速度过高的话是有可能穿透的,需要开启连续碰撞才行(CCD)

开启后也不见好,如果我把旋转的柱子给隐藏了,然后修改圈的重力,当手机倒过来会出现穿墙:

onLoad () {
    systemEvent.on(SystemEvent.EventType.DEVICEMOTION, this.onDeviceMotionEvent, this);
    systemEvent.setAccelerometerEnabled(true);
    this.rogidBody= this.node.getComponent(RigidBody);
    this.rogidBody.useCCD=true;
}

onDeviceMotionEvent (event:any) {
    if(this.rogidBody){

        this.deltaLinearFactor.x = event.acc.x;
        this.deltaLinearFactor.y= -event.acc.y;
        this.deltaLinearFactor.z= event.acc.z;
        this.rogidBody.linearFactor=this.deltaLinearFactor;
    }
}
onDestroy () {
    systemEvent.setAccelerometerEnabled(false);
    systemEvent.off(SystemEvent.EventType.DEVICEMOTION, this.onDeviceMotionEvent, this);
}

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。