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

Unity开发Rotate Ball Pro陀螺仪控制迷宫初始姿态平衡问题求助

问题原因

你当前的代码直接使用设备原始加速度值映射迷宫旋转角度,没有校准启动时的初始加速度基准:只有手机与地面平行时,重力在加速度传感器的x、y轴分量为0,对应迷宫初始平衡;如果启动时手机处于其他角度,重力在对应轴的初始分量不为0,迷宫初始状态就会是倾斜的,必须保持固定姿势才能正常游玩。

修复方案

新增初始加速度基准校准逻辑,启动时记录当前设备的加速度作为基准值,后续每次计算旋转时先减去基准值,抵消初始姿势的影响,修改后的代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[System.Serializable]
public class NewMovementScript : MonoBehaviour
{
    public float multiplier = 0;
    // 存储启动时的初始加速度基准
    private Vector3 initialAcceleration;

    void Start()
    {
        Input.gyro.enabled = true;
        Screen.sleepTimeout = SleepTimeout.NeverSleep;
        // 启动时记录当前加速度作为基准
        initialAcceleration = Input.acceleration;
    }

    void FixedUpdate()
    {
        // 减去初始基准,得到相对初始姿势的加速度偏移量
        Vector3 relativeAccel = Input.acceleration - initialAcceleration;
        
        var dir = Vector3.zero;
        dir.x = relativeAccel.x * -1 * multiplier;
        dir.z = relativeAccel.y * multiplier;
        transform.eulerAngles = new Vector3(dir.z, 0f, dir.x);
    }
}

优化建议

  • 可以增加1~2秒的启动校准缓冲期,避免用户启动游戏时刚好在晃动手机,导致基准值不准
  • 如果需要支持游玩中途重新校准,可以加一个校准按钮,点击时重新给initialAcceleration赋值当前的Input.acceleration即可
  • 可以增加旋转角度限制,避免玩家倾斜幅度过大导致迷宫旋转过度影响体验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:45:03