c# - unity 平滑精确相机随惯性移动
问题描述
我正在尝试编写一个相机脚本,但它没有按预期工作。
void LateUpdate(){
if (Input.GetMouseButtonDown(0)
{
_lastPosition = Input.mousePosition;
}
if (Input.GetMouseButton(0))
{
var delta = _lastPosition - Input.mousePosition;
var deltaxz = new Vector3(delta.x, 0f, delta.y);
transform.Translate(deltaxz * Time.deltaTime, Space.World);
_lastPosition = Input.mousePosition;
}
}
我写了这段代码来移动相机,但是鼠标奇怪地移动了相机。如果我将鼠标移动得太快,它就会移动得很快。如果慢,则相机的移动速度比鼠标慢。
我认为这ScreenToWorldPoint
会有所帮助,但相机是 RTS 风格,我想像移动地面一样移动它“拖放”\
解决方案
你应该尝试使用
Vector3.Lerp(_lastPosition, deltaxz, someValue * Time.deltaTime)
这是我用来使动作更流畅的东西,它非常好,只需根据你想要的速度调整 someValue
推荐阅读
- nuget - 确保只能从特定源安装 NuGet 包
- linux - 如何使用 mobaXterm 将本地文件正确上传到服务器?
- android-fragments - 将值从一个片段传递到另一个片段
- java - libc++abi.dylib:使用 JAVA 构建 OpenGL 应用程序时以 NSException 类型的未捕获异常终止
- kubernetes - 如何将秘密挂载到 Kubernetes StatefulSet
- c# - OpenGL将错误的数据写入图像
- node.js - AWS Amplify 配置不允许登录控制台
- ubuntu-18.04 - 为什么我的 Ubuntu 机器没有 /dev/cpu/0/cpuid 目录?
- arrays - LeetCode 二和问题 - 多维数组帮助 Java
- android - 如何在 RecyclerView 中添加 OnClickListener 和动画?