如何减慢旋转速度?

所以我写了一些代码来让我向左或向右滑动对象旋转


using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class Rotater : MonoBehaviour {


public Transform player;


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);

        }


    }

}

}

问题是当我快速滑动时,旋转将无法控制。所以我希望输入不那么敏感。


我的目标是让旋转像滚动的漩涡


我的设置:


我做了一个空物体并将它放在中心


使空对象成为我的播放器的父对象


最后,我把我的代码放在空对象中


这个设置让玩家在某种轨道上旋转,就像我告诉你的那样,类似于滚滚涡流。


萧十郎
浏览 143回答 2
2回答

收到一只叮咚

而不是通过 touch0.deltaPosition.x 旋转,您总是可以使用某种负指数函数。在这种情况下,它可能与 e^(-xa) 类似,其中 x 是您的 touch0.deltaPosition.x,而 a 将是一个变量,您必须根据您想要的初始速度有多快来确定的旋转。如果您不熟悉指数函数,请尝试使用 Desmos 之类的绘图软件绘制 y=e^(-xa) 并改变 a 的值。一旦你想象它应该是不言自明的。

桃花长相依

首先,您希望能够缩放灵敏度。这意味着对于触摸位置的每个单位变化,您将获得旋转变化单位的一些倍数。为此,创建一个可配置(公共)成员变量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,则旋转的灵敏度将减半。如果这不能完全解决问题并且您还想要一些平滑或加速,则可能需要对问题进行编辑。我希望它有帮助!
打开App,查看更多内容
随时随地看视频慕课网APP