如影片所示,硬幣使用cylinderCollider或meshCollider時,掉到平台會有陷下去的問題,但改用boxCollider卻不會有這問題。目前使用的物理引擎是ammo.js,請問有辦法解決嗎?
有製作團隊的帥哥美女能幫我看看這問題嗎?
不然真的要用兩個碰撞盒了
你好,能否通过一个稳定复现的demo
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);
}
}
用了之後有解決單一硬幣跟兩個平台之間的穿透比較不明顯,
但兩個硬幣有相疊的情況時,下方的硬幣就有很明顯地穿透問題,甚至會被壓到平台下方。
可以试试把运动平台稍微弄低点,避免一些精度问题
測試當前一個金幣被後一個金幣壓到時會陷下去,
且如果金幣一直被壓著時會一直保持陷下去狀態。
对下版本,看看是不是一样的
這邊是用3.0.0-preview.1版
了解,暫時先這樣了,謝謝幫忙
该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。