c# - 如何减慢旋转速度?

标签 c# android unity-game-engine game-engine

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

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

    }
}
}

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

我的目标是轮换像 rolly vortex

我的设置:

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

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

  • 最后,我将代码放入空对象中

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

最佳答案

首先您希望能够缩放灵敏度。这意味着对于触摸位置的每一个变化单位,您都会得到旋转变化单位的某个倍数。为此,创建一个可配置(公共(public))成员变量 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,则旋转灵敏度将减半。

如果这不能完全解决问题,并且您还需要一些平滑或加速,则可能需要对问题进行编辑。

希望对您有帮助!

关于c# - 如何减慢旋转速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50994700/

相关文章:

c# - 如何使用带有泛型参数的类型作为约束?

java - Android:如何正确使用 NotifyDataSetChanged 和 SimpleExpandableListAdapter?

Android 后退按钮和 MediaController

c# - 敌人出现在玩家身后的机会 1 对 5

c# - 基类的相同方法的不同返回类型

javascript - 如何在 AngularJS 中实现服务器端搜索框

C# 使用 LINQ 限制递归列表

android - Android NSD(网络服务发现)是否与 iOS 中的 Bonjour 服务兼容?

android - 在一个项目中使用数据库和身份验证包时,Unity Firebase [至 Android] 出现错误

unity-game-engine - 模拟双面扑克牌的最佳方法?