如何将键盘控制的玩家绕中心旋转功能适配为触摸控制?
解决触摸控制玩家绕中心旋转的问题
没问题,我来帮你把键盘控制的旋转逻辑改成触摸左右区域的控制方式!核心思路是通过判断触摸点在屏幕的左半区还是右半区,来对应设置旋转的方向,直接替换原来键盘输入的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
相关产品推荐
相关产品推荐

