每当玩家进入移动平台的触发器来移动他时,我得到了这个代码来移动他:
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()一起使用。
任何人都知道出了什么问题?
答案 0 :(得分:1)
“玩家被缓慢地推向平台移动的方向”是有道理的,因为 Rigidbody.MovePosition 将运动刚体移向位置。因此,您不会像使用变换那样直接设置位置。您可能想看看 Rigidbody.position 具有与直接设置变换相同的“传送”效果。
为了将平台的移动应用到播放器上,就像我想你想做的那样,我会让玩家成为平台的孩子,就像当父母移动时,所有的孩子都会一起移动。您可以相应地在 OnTriggerEnter
和 OnTriggerExit
中操纵场景游戏对象的层次结构,以便感兴趣的运动应用发生在 Transform.SetParent 中。