(Unity) 移动平台怪异地移动玩家

时间:2021-06-23 19:59:48

标签: unity3d

每当玩家进入移动平台的触发器来移动他时,我得到了这个代码来移动他:

private void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("Moving Platform"))
    {
        previousPosition = other.transform.position;
    }
}
private void OnTriggerStay(Collider other)
{
    if (other.CompareTag("Moving Platform"))
    {
        Vector3 distanceVector = other.transform.position - previousPosition;
        rb.MovePosition(rb.position + distanceVector);

        previousPosition = other.transform.position;
    }
}

出于某种原因,玩家会被缓慢地推向平台移动的方向。当将播放器的父级设置为平台时,它也会发生,我需要将播放器设置为运动学,以便他移动,这会导致移动出现问题。为玩家提供粘性物理材料也会产生问题。

通过添加力来移动玩家,平台与刚体.MovePosition()一起使用。

任何人都知道出了什么问题?

1 个答案:

答案 0 :(得分:1)

“玩家被缓慢地推向平台移动的方向”是有道理的,因为 Rigidbody.MovePosition 将运动刚体移向位置。因此,您不会像使用变换那样直接设置位置。您可能想看看 Rigidbody.position 具有与直接设置变换相同的“传送”效果。

为了将平台的移动应用到播放器上,就像我想你想做的那样,我会让玩家成为平台的孩子,就像当父母移动时,所有的孩子都会一起移动。您可以相应地在 OnTriggerEnterOnTriggerExit 中操纵场景游戏对象的层次结构,以便感兴趣的运动应用发生在 Transform.SetParent 中。