c# - 改变玩家位置后无法移动
问题描述
我正在尝试进行传送。玩家击中传送点,然后前往另一个传送点。然而,当他到达那里时,他无法动弹......
// 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;
}
}
解决方案
好像您正在使用标准资产中的 FPSController。如果为真,则该 FPSController 对象包含 CharacterController 组件。该组件可能会阻止更改对象的位置transform.position
(换句话说,位置将更改为特定位置,但之后对象将返回到更改之前设置的先前位置transform.position
)。
正如您所描述的,FPSController 对象在被传送到新位置后刚刚冻结。这是因为当 valuehitted1
更改为时true
,player.transform.position = posi;
运行每个Update()
原因hitted1
值都停留在true
.
但是,当您尝试取消注释hitter1 = false
时,FPSController 对象会返回到之前的位置。这是因为 CharacterController 在通过 更改位置时保持启用状态transform position
。
尝试:
CharacterController controller;
void Start() {
controller = player.GetComponent<CharacterController>();
}
void Update()
{
if(hitted1){
posi = new Vector3(42.49f, 0.5f, 163.8f);
controller.enabled = false;
player.transform.position = posi;
controller.enabled = true;
hitted1 = false;
}
}
推荐阅读
- java - 使用 Junit 5 和 spring boot 2 在 Mokito 2 中未找到测试
- javascript - 如何从 AJAX 向 Odoo 10 自定义模块控制器发出 POST/GET 请求?(被 CORS 政策阻止)
- c++ - C++中的类矩阵
- office-js - 已验证的 Excel 插件清单在本地 Excel 中有效,但在在线 Excel 中无效
- python - python - 使用标准(开尔文到摄氏度)从csv中替换特定列中的一些值
- google-api - 使用服务帐户的 Google AUTOML API 集成问题
- python - 使用 pd.read_csv 忽略仅包含缺失值的列
- zerobrane - Zerobrane 黑暗模式操作方法
- cron - phantomjs chrontab 无法连接到 x 显示器
- javascript - 在网站和 InAppBrowser 之间进行通信