【问题标题】:Unity changing friction from code not working (2D)统一从代码不工作改变摩擦(2D)
【发布时间】:2015-04-21 09:13:33
【问题描述】:

我想从代码中更改对撞机的物理材质,我使用下面的代码。我在检查器中看到材料的摩擦力发生了变化,但是对撞机的行为就好像摩擦力不会改变一样。

 void checkOnGround() {
     Transform t;
     foreach(Collider2D c in collidingTiles) {
         t = c.transform;
         if(t.position.y - transform.position.y < -Misc.TILE_SIZE * 0.75f) {
             onGround = true;
             myCollider.sharedMaterial.friction = 0.8f;
             return;
         }
     }
     onGround = false;
     myCollider.sharedMaterial.friction = 0f;
     return;
 }

【问题讨论】:

  • 为什么要修改 sharedMaterial 而不是 material 属性?
  • 二维中没有材质属性
  • 抱歉,没注意到。当我尝试使用 Unity 的 Physics2d 时,它非常粗糙且未打磨,所以我切换回 3d 物理(即使是 2d 项目),一般来说,这就是我的建议。

标签: unity3d physics unity3d-2dtools


【解决方案1】:

存在已知的 Unity 错误。 您可以禁用/启用对撞机以应用更改的材质,有时还可以添加一些轻弹纹理。

【讨论】:

  • 在 Box2D 中发生的有趣的事情,长话短说,摩擦在碰撞开始时被缓存并一直保持到接触结束
猜你喜欢
  • 2016-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多