c# - 如何顺利转动门
问题描述
我正在制作一个门必须平稳旋转-90度的游戏。我尝试了很多不同的东西,但我无法让它发挥作用。
public float degrees = -90f;
public Transform door;
private void update()
{
door.transform.Rotate(0f, 0f, degrees, Space.Self);
}
我如何使它平稳旋转而不是卡入到位?
解决方案
一个简单的解决方案
public float degrees = -90f;
public float rotationDuration = 5f;
public Transform door;
private float startTime;
private bool isOpenningDoor;
private void OpenDoor()
{
startTime = Time.time;
door.transform.eulerAngles = Vector3.zero;
isOpenningDoor = true;
}
private void update()
{
if(Input.GetKeyDown(KeyCode.O))//for testing
{
OpenDoor();
}
if(isOpenningDoor)
{
float ratio = (Time.time - startTime)/rotationDuration;//percentage of total rotation
if(ratio >= 1f)//when you reached max rotation
{
ratio = 1f;
isOpenningDoor = false;//Stop extra rotation
}
door.transform.Rotate(0f, 0f, ratio * degrees, Space.Self);
}
}
示例中的打开时间为 5 秒。如果你想做很多小程序员的动画,我建议Dotween做一些很好的缓动和快速的实现。
推荐阅读
- node.js - 生成唯一 ID,例如 Firebase Firestore
- c# - 从本地磁盘动态加载 DLL
- python - MySQL中的Python变量执行命令
- azure - 部署到 Azure 应用服务时迁移数据库
- ant - 如何使用 ant build.xml 为多模块应用程序创建 EAR 文件?
- python - 提取两个相同字符串之间的行?
- appium - 如何为 clearSystemFiles 添加功能
- mysql - 从 GKE 连接到 AWS 数据库
- sql-server - 从 SQL SERVER 的列中过滤掉所有日期时间和整数值
- mysql - 与远程 MySQL 数据库的 SQL Server 中的链接服务器连接