unity3d - 使用玩家输入移动刚体
问题描述
我试图使用控制器在 3d 世界中移动对象,但我认为我错过了一些东西,因为只要我给出任何输入,它就会被剪掉:
private void Update()
{
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");
Vector3 movement = new Vector3(h, 0, v).normalized * Time.deltaTime * speed;
if(h != 0 || v != 0)
_rigidBody.MovePosition(movement);
}
使用 可以正常工作_rigidbody.velocity
,但据我了解,这些类型的事情应该避免。
解决方案
Rigidbody.MovePosition通过插值设置刚体的位置。看起来您想将位置偏移movement
,因此您可能应该设置速度。如果你还想使用MovePosition
,你应该这样做_rigidBody.MovePosition(transform.position + movement);
。
推荐阅读
- eclipse-rcp - 如何从 RCP 中的 IStatusLineManager 获取消息?
- python - 当两个输入之间有空格时如何输入?
- python - Keras - 如何让每一层在训练中花费的时间?
- github - 如何使用 splunk 监控 GitHub Appliance 实例
- install4j - ModifyTextFileAction 找不到并替换值
- java - Spring Boot批处理-启动时出现ClassNotFoundException
- java - 为什么在 THREAD_POOL_EXECUTOR 中的线程上的请求之间存在延迟?
- python-3.x - 如何使用 SpaCy 描绘或提取包含动词短语的复杂名词短语?
- python - Django StopIteration 问题
- terraform - 使用 terraform 修改预先存在的 IAM 角色