cylinderCollider陷入物件問題

http://m.v.qq.com/play.html?cid=&vid=r3223k9x6vp&vuid24=IyjQJ3oEQPs5gODepsOq7g%3D%3D&url_from=share&second_share=0&share_from=wxf

如影片所示,硬幣使用cylinderCollider或meshCollider時,掉到平台會有陷下去的問題,但改用boxCollider卻不會有這問題。目前使用的物理引擎是ammo.js,請問有辦法解決嗎?

有製作團隊的帥哥美女能幫我看看這問題嗎?
不然真的要用兩個碰撞盒了

你好,能否通过一个稳定复现的demo

檔案在此,感謝
coinTest.zip (1.4 MB)

Hi,这个问题可以用 CCD 方法避免

另外,地面如果不需要移动的话,可以将其设置为 Static 类型的

感謝,我再試試。
Static方面因為只是簡單的Demo,沒有注意到細節,謝謝提醒。

好像rb.body那裡就取不到東西了,是null
我知道1.2版可以,但3.0.0-preview.1是不是有什麼設定要改才取得到?

你试试直接替换一下这个脚本吧

import { _decorator, Component, Node, Prefab, instantiate, Vec3, RigidBody, v3, director, RigidBodyComponent, LabelComponent, CylinderCollider } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('coinCreat')
export class coinCreat extends Component {

    @property(Prefab)
    coin: Prefab = null;//金幣
    btnClick() {
        let instCoin = instantiate(this.coin);//複製金幣
        instCoin.parent = this.node;
        instCoin.position = new Vec3(2 - Math.random() * 4, 0, 0);
        useCCD(instCoin.getComponent(RigidBody));
    }
}

function useCCD (rb: RigidBody, ms = 0.001, sr = 0.05) {
    if (rb && window['CC_PHYSICS_AMMO']) {
        const Ammo = window['Ammo'];
        const impl = rb.body.impl;
        impl['useCCD'] = true;
        const co = Ammo.castObject(impl, Ammo.btCollisionObject);
        co['wrapped'] = rb.body;
        co['useCCD'] = true;
        impl.setCcdMotionThreshold(ms);
        impl.setCcdSweptSphereRadius(sr);
    }
}

用了之後有解決單一硬幣跟兩個平台之間的穿透比較不明顯,
但兩個硬幣有相疊的情況時,下方的硬幣就有很明顯地穿透問題,甚至會被壓到平台下方。

我这工作的挺好的,不太明白你指的穿透现象是什么

可以试试把运动平台稍微弄低点,避免一些精度问题
image

平台有弄低了,不過不是平台間縫隙的問題
我弄了一些截圖,看能不能比較好理解一點
物體停止運動就會浮上來,運動中有陷進去也不會浮上來,有用useCCD





20210127_101903
測試當前一個金幣被後一個金幣壓到時會陷下去,
且如果金幣一直被壓著時會一直保持陷下去狀態。

对下版本,看看是不是一样的
image

這邊是用3.0.0-preview.1版
Snipaste_2021-01-27_10-34-06

更新下版本试试
https://download.cocos.com/Cocos3D/v3.0.0/CocosCreator-v3.0.0-win32-012113.zip

1赞

更新了,但仍然跟原本一樣

有点奇怪,我重新下载项目后也出现了

给圆柱体内部加个盒子可以避免层叠的穿透

了解,暫時先這樣了,謝謝幫忙

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