c# - Unity中汽车选择菜单的平滑相机移动
问题描述
我想为我的游戏制作一个汽车选择屏幕。我可以用鼠标在我的车周围移动相机。仅当我按住鼠标按钮时,相机才会移动。当我释放鼠标按钮时,相机立即停止。但我想慢慢停下相机。我不想使用 Cinemachine。那么,如何在松开鼠标按钮时缓慢停止相机?这是我目前使用的代码:
public class MenuCameraMovement : MonoBehaviour
public Transform car;
private float sensitivity = 2f;
private void Update()
{
if (Input.GetMouseButton(0))
{
float rotateHorizontal = Input.GetAxis("Mouse X");
float rotateVertical = Input.GetAxis("Mouse Y");
//For rotating
transform.RotateAround(car.transform.position, Vector3.up, rotateHorizontal * sensitivity);
//No need vertical rotation
//transform.RotateAround(Vector3.zero, transform.right, rotateVertical * sensitivity);
}
}
解决方案
我会尝试类似(未调试):
using UnityEngine;
public class MenuCameraMovement : MonoBehaviour
{
public Transform car;
private float sensitivity = 2f;
private bool movementStarted;
private float sesitivityDecrease = 100f; // 100 is random. Play with it until it is ok
private void Update() {
if (Input.GetMouseButton(0)) {
movementStarted = true;
float rotateHorizontal = Input.GetAxis("Mouse X");
float rotateVertical = Input.GetAxis("Mouse Y");
//For rotating
transform.RotateAround(car.transform.position, Vector3.up, rotateHorizontal * sensitivity);
//No need vertical rotation
//transform.RotateAround(Vector3.zero, transform.right, rotateVertical * sensitivity);
} else {
if (movementStarted) {
if (sesitivityDecrease > 0) {
transform.RotateAround(car.transform.position, Vector3.up, sesitivityDecrease);
sesitivityDecrease--;
} else {
movementStarted = false;
sesitivityDecrease = 100;
}
}
}
}
}
你可以用这个值来玩,sesitivityDecrease
直到你想要的效果是正确的。
另一种方法是使用协程来完成
推荐阅读
- c# - ASP.NET Core 5 WebAPI - Azure AD - 使用 Azure 广告访问令牌调用图形 API
- ios - CloudKit 未按预期运行以存储文档
- json - 如何在 Ansible 中使用较小的 JSON 子集更新现有 JSON?
- node.js - 在nodejs中使用axios的Ldap连接不起作用
- avx2 - 我可以在介子“编译”测试中添加额外的标志吗?
- google-maps - 如何将谷歌地图位置添加到我的网站
- c# - 使用 LINQ 在 DBSet 中选择具有特定属性的 EF 属性
- selenium - 如何使用 selenium python 从 yelp 中提取数据
- html - 如何从 Angular 的列表中打印搜索值
- javascript - 如何为数组中的每个对象生成多张卡片?