【发布时间】:2019-06-21 05:35:15
【问题描述】:
我有一个带有BoxCollider2D 和Animator 组件的角色。我需要动态改变物理材料的摩擦力,所以我使用下一个函数:
private void ChangeFriction(float friction)
{
boxCollider.sharedMaterial.friction = friction;
boxCollider.enabled = false; // The friction won't be changed if I won't reset the collider
boxCollider.enabled = true;
}
问题是在执行此函数后,步行动画不再完全播放。如果我评论最后两行,那么一切都很完美,但摩擦不会改变,就像 To be or not to be。
我该如何解决这个问题?
【问题讨论】:
-
您使用
sharedMaterial而不是material有什么特别的原因吗?这个对撞机是你玩家的对撞机还是玩家移动的对象? -
@AliKanat
material没有属性。 -
哎呀,我现在意识到你有一个 2D 盒子对撞机。我认为您的代码中还有另一个问题,因为我现在尝试它,我不必启用和禁用我的对撞机来改变摩擦。你如何访问这个
boxCollider? -
@AliKanat,一如既往的
GetComponent<BoxCollider2D>()在Awake()方法中。
标签: c# unity3d game-physics unity3d-2dtools