2 回答
TA贡献1821条经验 获得超4个赞
而不是通过 touch0.deltaPosition.x 旋转,您总是可以使用某种负指数函数。在这种情况下,它可能与 e^(-xa) 类似,其中 x 是您的 touch0.deltaPosition.x,而 a 将是一个变量,您必须根据您想要的初始速度有多快来确定的旋转。如果您不熟悉指数函数,请尝试使用 Desmos 之类的绘图软件绘制 y=e^(-xa) 并改变 a 的值。一旦你想象它应该是不言自明的。
TA贡献1860条经验 获得超8个赞
首先,您希望能够缩放灵敏度。这意味着对于触摸位置的每个单位变化,您将获得旋转变化单位的一些倍数。为此,创建一个可配置(公共)成员变量public float touchSensitivityScale,并将旋转乘以该值。例子:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Rotater : MonoBehaviour {
public Transform player;
public float touchSensitivityScale;
void Update()
{
if (Input.touchCount == 1)
{
// GET TOUCH 0
Touch touch0 = Input.GetTouch(0);
// APPLY ROTATION
if (touch0.phase == TouchPhase.Moved)
{
player.transform.Rotate(0f, 0f, touch0.deltaPosition.x * touchSensitivityScale);
}
}
}
}
现在您可以在检查器中编辑触摸灵敏度。随着touchSensitivityScale设置为1,则该行为将等同于它是什么目前。如果将数字设为 0.5,则旋转的灵敏度将减半。
如果这不能完全解决问题并且您还想要一些平滑或加速,则可能需要对问题进行编辑。
我希望它有帮助!
- 2 回答
- 0 关注
- 142 浏览
添加回答
举报