You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将键盘控制的玩家绕中心旋转功能适配为触摸控制?

解决触摸控制玩家绕中心旋转的问题

没问题,我来帮你把键盘控制的旋转逻辑改成触摸左右区域的控制方式!核心思路是通过判断触摸点在屏幕的左半区还是右半区,来对应设置旋转的方向,直接替换原来键盘输入的movement变量即可。

完整修改后的代码

public float moveSpeed = 50f; // 确保这个值是正数,控制旋转速度

private void FixedUpdate()
{
    float movement = 0f;

    // 处理移动设备的触摸输入
    foreach (Touch touch in Input.touches)
    {
        // 只响应按下、持续触摸或移动中的触摸,避免触摸结束时的误操作
        if (touch.phase == TouchPhase.Began || touch.phase == TouchPhase.Stationary || touch.phase == TouchPhase.Moved)
        {
            float screenMidpointX = Screen.width / 2f;
            // 触摸左侧则向左旋转,右侧则向右旋转
            movement = touch.position.x < screenMidpointX ? -1f : 1f;
            // 只处理第一个触摸点,防止多触摸冲突
            break;
        }
    }

    // 编辑器/PC端用鼠标模拟触摸(方便测试,可删除)
    #if UNITY_EDITOR || UNITY_STANDALONE
    if (Input.GetMouseButton(0))
    {
        float screenMidpointX = Screen.width / 2f;
        movement = Input.mousePosition.x < screenMidpointX ? -1f : 1f;
    }
    #endif

    // 沿用你原来的旋转逻辑
    transform.RotateAround(Vector3.zero, Vector3.forward, movement * Time.fixedDeltaTime * -moveSpeed);
}

代码解释

  • 触摸输入处理:遍历所有触摸点,判断触摸的状态(有效触摸阶段),然后根据触摸位置相对于屏幕中点的位置,设置movement的正负值,对应左右旋转方向。
  • 多触摸处理:遍历到第一个有效触摸后就break,避免同时触摸左右区域时的冲突,如果你需要支持多触摸逻辑,可以去掉这个break。
  • 编辑器测试优化:添加了鼠标模拟触摸的代码,这样你在Unity编辑器里就能直接用鼠标点击屏幕左右区域测试效果,不用频繁打包到移动设备。
  • 旋转逻辑兼容:完全保留你原来的RotateAround调用,只是替换了movement的来源,确保和键盘控制时的旋转方向、速度一致。

注意事项

  • 确保moveSpeed是正数,否则旋转方向会和预期相反。
  • 如果你的玩家旋转方向和预期不符,可以调整movement的正负值(比如把-1f和1f互换),或者调整RotateAround里的-moveSpeed符号。

内容的提问来源于stack exchange,提问作者Pritam Thorat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 16:27:51