我正在尝试传送。玩家击中瞬移,然后转到另一个瞬移。但是当他到达那里时,他不能动...
// 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;
}
}
答案 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