c# - RigidbodyController 背景口吃(我是否正确移动了我的 Rigidbody 控制器?)
问题描述
我正在开发一个非常基本的播放器控制器,并且在使用刚体播放器时遇到了很多口吃。我还有一个运行非常流畅的角色控制器播放器,两个测试都在高 fps 600 ish(垂直同步关闭)。在这两种情况下,我都使用统一电影机的 freelook 相机,并将 CinemachineBrain 更新模式设置为固定刚体场景。我尝试在刚体上打开插值并更改 FixedUpdateTimestep(我试图避免),但我想知道它是否与我移动刚体的方式有关?下面是一个显示问题的视频,请确保全屏观看并注意积木楼梯(如果不清楚红色播放器是基于 Rigidbody 的,而绿色播放器使用 CharacterController 组件)。
我的刚体运动代码(很简单);
void Update()
{
_isGrounded = Physics.CheckSphere(_groundChecker.position, GroundDistance, Ground, QueryTriggerInteraction.Ignore);
_inputs = Vector3.zero;
_inputs.x = Input.GetAxis("Horizontal");
_inputs.z = Input.GetAxis("Vertical");
if (_inputs != Vector3.zero)
transform.forward = _inputs;
}
void FixedUpdate()
{
_body.MovePosition(_body.position + _inputs * Speed * Time.fixedDeltaTime);
}
解决方案
我相信如果你想直接移动刚体,你需要为它打开运动学标志。否则所有其他刚体和通过你的运动施加到它的力都会影响它并导致抖动或奇怪的行为。
请参阅此页面:https ://docs.unity3d.com/ScriptReference/Rigidbody-isKinematic.html
推荐阅读
- php - 比较键上的两个数组,如果键不匹配,则创建多个数组集值
- dart - Flutter:具有多个小部件的自定义抽屉
- java - 从Android(JAVA)的Json(序列化形式)中检索数据
- sensors - 有哪些很好的资源可以了解 IMU 的传感器漂移校正?
- ruby-on-rails - Ruby Active Record 加入并包含为计数生成不同的 sql
- android - 使用 Espresso 进行 E2E 测试:在完成 @Test/正确构建更大的测试用例后保持应用程序打开
- django - Django:基于模型实例属性的权限
- ibm-watson - Watson 发现结果在聊天机器人中以 pdf 形式出现
- javascript - 从其他视图获取位于 app.view 标题上的切换按钮的状态
- azure-devops - 无法从服务可执行文件路径 VisualStudioRemoteDeployer.exe 安装“VisualStudioRemoteDeployer”