ammo.js引擎的摩擦力如何作用?

如圖,先稱圓圓扁扁的是硬幣,推動硬幣的是推台。

之前使用babylon.js做出了類似的模型,使用ammo.js的物理引擎,當硬幣掉落在推台上時,硬幣是會跟著推台移動的,不會停留在原地。(推台跟硬幣的摩擦力可以分開設定,當其中一個的摩擦系數為0,硬幣才會停留在原地)但使用Creater 3D之後,推台不論怎麼移動,上方的硬幣都不會移動,下方被推的硬幣也有一小角被吃掉的情形。請問是有什麼設定需要調整或是有其他方法?

目前使用的是Cocos Creater 3D v1.2,物理引擎選項為ammo.js,摩擦系數為0.7,其餘為預設;推台質量為0,IsKinematic=true;硬幣質量為1。


以下是babylon.js使用ammo.js的效果:

暂时无法看出什么问题,可以提供一个复现demo吗

你需要设置刚体速度来进行移动,不要直接设置节点位置

1赞

https://github.com/t3080238/cocos3D-practice
Demo在這裡,設置剛體速度的方法也試過了,不知道是我哪裡用錯還是少了什麼,設置了反而不會動作,才改成setPosition。

另外若將推台的scale.y=1, position.y=0.5,則硬幣有機率會被壓到推台下方不會產生碰撞。我覺得應該是我的方法錯了,但查不到解法。

ammo的的确是有问题呢,我这边测试也是设置成kinematic设置线性速度是无效的,只有设置成dynamic的才行

1赞

这个不是 bug 哈,ammo 要求 kinematic 类型的刚体只能通过修改 Transform 运动

hi,感谢宝贵的demo,原因是 ammo 的 kinematic 有点问题,下个版本将会修复

我给你的仓库提了一个临时修复PR,可以合并后再看一下

1赞

感謝幫忙,現在可以正常動作了!

嗨,帥哥
新版本的Creator 3.0似乎還是有這個問題,而且您提供的程式碼似乎沒有作用了。

最新提交中有些使用不对的地方,调整下就能正常工作了,另外之前加入的 hack 代码可以将其删除了

  1. 物理模块需要切换成 Ammo (preview版本有个bug,切换完成后需要重启编辑器)
  2. 运动平台需要设置成 KINEMATIC 类型的刚体
1赞

改好了,感謝。

更新版本後好像不會把isKinematic自動轉換,也有enable是false的RigidBody轉換後雖然仍是false,但預覽時會有作用。不過這情況很好處理,謝謝。

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