所以我试图用陀螺仪控制器来平台倾斜。当我加载游戏时,平台已经倾斜,因为我的程序似乎根据我的手机相对于y轴的物理位置产生恒定的扭矩。我需要能够将我的手机返回位置设置为(0,0,0)或创建一个可以抵抗手机持续移动的扭矩,以便这些控件更易于管理。有什么想法吗?
public class balance : MonoBehaviour {
public float torque;
public Rigidbody rb;
void Start() {
rb = GetComponent<Rigidbody>();
}
void FixedUpdate() {
Input.gyro.enabled = true;
rb.transform.Rotate(Input.gyro.attitude.x, 0, Input.gyro.attitude.z);
}
}
答案 0 :(得分:0)
我认为您只需要旋转最后一帧和此帧(FixedUpdate)的旋转增量。像这样:
public class balance : MonoBehaviour {
public float torque;
public Rigidbody rb;
private Vector3 prefFrameRotation;
private Vector3 deltaRotation;
void Start() {
Input.gyro.enabled = true;
deltaRotation = Vector3.zero;
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
deltaRotation = prefFrameRotation - Input.gyro.attitude;
//you don't even need to use Time.fixedDeltaTime because
//the calculations are per fixedUpdate anyways
rb.transform.Rotate(deltaRotation.x, 0, deltaRotation.z);
prefFrameRotation = Input.gyro.attitude;
}
}