C# 移动平台整体下落时,物体未接触地面

C# 移动平台整体下落时,物体未接触地面,c#,unity3d,C#,Unity3d,我用Unity让我的角色从一个移动的平台上跳下来,在那里它可以无限地上下移动。我面临的问题是,当移动平台上升时,跳跃工作正常,但当平台下降时,我的角色不能经常跳跃&我可以看到平台有点“振动”,这很奇怪 这是我的密码: 移动平台脚本[NB-刚体2d设置为运动学] public class Moveground : MonoBehaviour { [SerializeField] private Transform posTop, posBot; private float maxT

我用Unity让我的角色从一个移动的平台上跳下来,在那里它可以无限地上下移动。我面临的问题是,当移动平台上升时,跳跃工作正常,但当平台下降时,我的角色不能经常跳跃&我可以看到平台有点“振动”,这很奇怪

这是我的密码:

移动平台脚本[NB-刚体2d设置为运动学]

public class Moveground : MonoBehaviour
{
    [SerializeField] private Transform posTop, posBot;
    private float maxTop = -0.5f;
    private float maxBot = -5.0f;
    [SerializeField] private float speed;
    [SerializeField] private Transform startPos;
    private Vector2 nextPos;
    
    private void Start()
    {
        nextPos = startPos.position;
    }

    private void FixedUpdate()
    {
        if (transform.position == posTop.position)
        {
            nextPos = posBot.position;
        }

        if (transform.position == posBot.position)
        {
            nextPos = posTop.position;
        }
        transform.position = Vector2.MoveTowards(transform.position, nextPos, speed*Time.deltaTime);
    }
}
PlayerController.cs(仅跳转部分)

[SerializeField]私有层掩码地面;
私人住宅;
私有void Start()
{
coll=GetComponent();
}
私有void更新()
{
InputManager();
}
私有void InputManager()
{
if(Input.GetButtonDown(“Jump”)&&coll.IsTouchingLayers(ground))//移动平台的层也是“ground”
{
跳跃();
}
}
私有无效跳转(){
rb.velocity=newvector2(rb.velocity.x,jumpforce);//jumpforce是一个浮点数
}
我如何解决这个问题?我是Unity的新手。

请在PlayerController类中尝试以下内容,而不是“iTouchLayers”:

public bool IsGrounded()
{
    return Physics2D.Raycast(transform.position, Vector3.down, 0.1f, ground);
}
然后使用距离参数,即0.1f参数

如果您的玩家变换不在玩家的底部,您也可以输入以下内容,而不是0.1f:

coll.bounds.extents.y + 0.1f

非常感谢。这解决了跳跃问题,但平台仍在晃动。这并不重要,但如果您有任何修复此问题的想法,请让我知道。尝试使用更新而不是FixedUpdate。您正在FixedUpdate中使用Time.deltaTime,这违背了它的目的。FixedUpdate被称为每秒固定次数,这就是为什么它用于需要每秒发生相同次数的事情,而不考虑帧速率,比如物理。但大多数情况下,您应该将Update与time.deltaTime结合使用,以获得帧独立性。
coll.bounds.extents.y + 0.1f