C# 胶囊碰撞器与动画不同步

C# 胶囊碰撞器与动画不同步,c#,unity3d,scripting,C#,Unity3d,Scripting,我正在创建一个玩家跳跃功能,而对撞机并没有达到与我的玩家跳跃时的脚相同的高度 我目前正试图根据玩家的位置手动定位碰撞器。然而,这导致了太空舱现在飞得太高,而且由于下落所需的时间,玩家最终被半淹没在地里 void Jump(){ if(Input.GetKeyDown(KeyCode.Space)和&isground==true){ isfounded=false; 动作。跳跃(); 刚体。添加相对力(矢量3.up*跳跃速度); startTime=Time.Time; } 否则{ if(变换位置

我正在创建一个玩家跳跃功能,而对撞机并没有达到与我的玩家跳跃时的脚相同的高度

我目前正试图根据玩家的位置手动定位碰撞器。然而,这导致了太空舱现在飞得太高,而且由于下落所需的时间,玩家最终被半淹没在地里

void Jump(){
if(Input.GetKeyDown(KeyCode.Space)和&isground==true){
isfounded=false;
动作。跳跃();
刚体。添加相对力(矢量3.up*跳跃速度);
startTime=Time.Time;
}
否则{
if(变换位置y<.6f){
isGrounded=true;
}
}
}
私有void更新(){
如果(!isground){
dist=(Time.Time-startTime)*capSpeed;
fracOfJourney=距离/行程长度;
capCollider.center=Vector3.Lerp(开始、结束、旅程);
}
否则{
//capCollider.center=Vector3.Lerp(结束、开始、旅程);
}
} 

与其自己计算胶囊碰撞器的位置,不如将播放器的渲染组件与胶囊碰撞器分离。作为一种可能的解决方案,您可以在您的继承权中:

Player Root: (rigidbody, player animator, Movement Script) Renderer: (Mesh of player and renderer here) Collider: (Capsule Colider here) 玩家根:(刚体,玩家动画,动作脚本) 渲染器:(此处为播放器和渲染器的网格) 对撞机:(这里是胶囊收集器) 完成此操作后,您可以通过在跳跃动画期间根据需要更改比例和位置来匹配胶囊碰撞器的边界。将对撞机分离到自己的游戏对象中,可以在不影响玩家外观或位置的情况下更改比例