更改玩家位置后无法移动

时间:2019-08-19 18:17:59

标签: c# unity3d

我正在尝试传送。玩家击中瞬移,然后转到另一个瞬移。但是当他到达那里时,他不能动...

// Update is called once per frame
void Update()
{
    if(hitted1){
        posi = new Vector3(42.49f, 0.5f, 163.8f); 
        player.transform.position = posi;
        //hitted1 = false;
    }
}

void OnTriggerEnter(Collider other){
    if(other.name == "FPSController"){
        Debug.Log("player hit tele1");
        hitted1 = true;
    }
}

2 个答案:

答案 0 :(得分:1)

似乎您正在使用Standard Assets的FPSController。如果为真,则该FPSController对象包含CharacterController组件。该组件可以防止通过transform.position更改对象的位置(换句话说,位置将更改为特定位置,但是此后该对象将返回到更改transform.position之前设置的先前位置)。

正如您所描述的,FPSController对象在被传送到新位置后刚刚冻结。这是因为当hitted1的值更改为true时,运行每个player.transform.position = posi;的{​​{1}}导致Update()的值停留在hitted1中。

但是,当您尝试取消注释true时,FPSController对象将返回其先前位置。这是因为在通过hitter1 = false更改位置时,CharacterController保持启用状态。

尝试执行以下操作:

transform position

答案 1 :(得分:0)

以下是您所问问题的答案。您的代码不断不断地调用相同的传送代码,因此它会首次移动角色,但在初始更新每帧后将其置于相同位置。在评论中,您说不加评论hithit1 = false;导致其他问题,这可能是事实。但这将解决运动问题。解决该问题,然后解决因未注释而引起的问题。

form_start