在Unity中,玩家处于不同的状态,要求的碰撞框的 位置/大小/方向 会有所改变,怎么动态的修改碰撞框呢?
下面是Capsure Collider(胶囊体)的修改:
CapsuleCollider.direction=0,1 or 2;
这里0,1,2,分别对应X,Y,Z方向
怎么将中心/半径/高度/方向一起修改呢?这里我设置了一个方法
////// 改变碰撞框的大小和位置 /// /// 中心 /// 半径 /// 高度 /// 方向 private void ChangeRunColliderEvent(Vector3 center, float radius,float hight,int direction) { capsuleCollider.center = center; capsuleCollider.radius = radius; capsuleCollider.height = hight; capsuleCollider.direction = direction; }
好了,方法设置完之后,只需要根据玩家所要求的状态就可以调用这个方法来修改碰撞框了
if (ani.IsPlaying("slide")) { ChangeRunColliderEvent(new Vector3(0.11f, -6.19f, -2.11f), 3.08f, 13.09f,2); } else { ChangeRunColliderEvent(new Vector3(0.69f, -2.50f, -2.81f), 4.05f, 13.69f,1); }程序运行结果显示: