Unity 3D逼真的加速度计控制
Unity 3D realistic accelerometer control
我们如何实现类似这个游戏的控制?
https://play.google.com/store/apps/details?id=com.fridgecat.android.atiltlite&hl=en
您可以使用内置物理学来做到这一点:
- 从一些简单的缩放立方体创建一个关卡(不要忘记地面)。
添加球 - 一个球体,然后向其添加一个 RigidBody
。对刚体设置约束 - 检查冻结位置 y(否则如果将设备倒置,它将能够跳出关卡)。
将此脚本添加到场景的任何位置(例如相机):
using UnityEngine;
public class GravityFromAccelerometer : MonoBehaviour {
// gravity constant
public float g=9.8f;
void Update() {
// normalize axis
Physics.gravity=new Vector3(
Input.acceleration.x,
Input.acceleration.z,
Input.acceleration.y
)*g;
}
}
或者如果你想让物理只影响这个对象,将这个脚本添加到对象并关闭它的刚体受重力的影响:
using UnityEngine;
[RequireComponent(typeof(Rigidbody))]
public class ForceFromAccelerometer : MonoBehaviour {
// gravity constant
public float g=9.8f;
void FixedUpdate() {
// normalize axis
var gravity = new Vector3 (
Input.acceleration.x,
Input.acceleration.z,
Input.acceleration.y
) * g;
GetComponent<Rigidbody>().AddForce (gravity, ForceMode.Acceleration);
}
}
现在你有了工作球物理学。要使球的行为如您所愿,请尝试使用刚体属性。例如,将阻力更改为 0.1 之类的值。
我们如何实现类似这个游戏的控制? https://play.google.com/store/apps/details?id=com.fridgecat.android.atiltlite&hl=en
您可以使用内置物理学来做到这一点:
- 从一些简单的缩放立方体创建一个关卡(不要忘记地面)。
添加球 - 一个球体,然后向其添加一个
RigidBody
。对刚体设置约束 - 检查冻结位置 y(否则如果将设备倒置,它将能够跳出关卡)。将此脚本添加到场景的任何位置(例如相机):
using UnityEngine; public class GravityFromAccelerometer : MonoBehaviour { // gravity constant public float g=9.8f; void Update() { // normalize axis Physics.gravity=new Vector3( Input.acceleration.x, Input.acceleration.z, Input.acceleration.y )*g; } }
或者如果你想让物理只影响这个对象,将这个脚本添加到对象并关闭它的刚体受重力的影响:
using UnityEngine; [RequireComponent(typeof(Rigidbody))] public class ForceFromAccelerometer : MonoBehaviour { // gravity constant public float g=9.8f; void FixedUpdate() { // normalize axis var gravity = new Vector3 ( Input.acceleration.x, Input.acceleration.z, Input.acceleration.y ) * g; GetComponent<Rigidbody>().AddForce (gravity, ForceMode.Acceleration); } }
现在你有了工作球物理学。要使球的行为如您所愿,请尝试使用刚体属性。例如,将阻力更改为 0.1 之类的值。