在传送播放器时保持相对位置?

时间:2018-08-10 10:48:34

标签: c# unity3d

我正在尝试建立一个传送系统,以允许播放器和其他对象在地图之间移动。当我输入触发器时,我想从另一个门户进入我进入第一个门户的相对位置(例如:如果我要从门户的左侧进入,我将从另一个门户的左侧退出) )。

我的代码:

private void OnTriggerEnter(Collider other)
{
    if (!justTeleported.Contains(other.gameObject))
    {
        if (other.transform != null && other.transform.tag == "Player" || other.transform != null && other.transform.tag == "Ammo")
        {
            Vector3 velocity = other.transform.GetComponent<Rigidbody>().velocity;
            other.transform.position=connectedTo.transform.position;
            other.transform.GetComponent<Rigidbody>().velocity = velocity;
            connectedTo.GetComponent<Portal>().justTeleported.Add(other.gameObject);
        }
    }
}

(我的播放器也可以拾取物品并将其扔到门户中)

1 个答案:

答案 0 :(得分:3)

获取传送器的相对位置

var relative = player.transform.position - teleporter.transform.position;

然后当您传送播放器时

player.transform.position = teleporterExit.transform.position + relative;