团结3D根据加速旋转游戏对象(unity 3d rotate the gameobject acco

2019-10-20 17:17发布

我想要像寺运行游戏。 我需要根据我的多少倾斜装置转动我的播放器的平台。 我想加速度计,但我不能让游戏对象倾斜。 请指导我。 谢谢

这是我的代码,我使用注释代码之前,现在我尝试使用的代码出来的意见

public class tilt : MonoBehaviour {
Vector3 dir;
float movespeed;
bool istilt;
// Use this for initialization
void Start () {
    dir=Vector3.zero;
    movespeed=10.0f;
    istilt=true;

}

// Update is called once per frame
void FixedUpdate()
{
    //dir.x=-Input.acceleration.y;
    //transform.Translate(dir.x,0,0);
    //transform.Translate(Input.acceleration.x, 0, -Input.acceleration.z);
    //Vector3 vec = Physics.gravity;
    /*vec.x = -Physics.gravity.z;
    vec.z = Physics.gravity.x;
    vec.y = 0;
    transform.rotation = Quaternion.Euler(vec);*/
    /*movespeed=-Input.acceleration.y;

    transform.Rotate(Vector3.up*movespeed*5.0f); 
*/float zmovment = Input.GetAxis("Horizontal");//-Input.acceleration.y;
    float xmovment = Input.GetAxis("Vertical");//-Input.acceleration.x;
    Vector3 dir = new Vector3(xmovment,0,zmovment);

    Vector3 tgravity =new Vector3(zmovment*2.0f,-15,xmovment*2.0f);
    Physics.gravity= tgravity;//new Vector3(zmovment*speed,gravity,xmovment*speed);
    Vector3 vec = Physics.gravity;
    vec.x = -Physics.gravity.z;
    vec.z = Physics.gravity.x;
    vec.y = 0;
    transform.rotation = Quaternion.Euler(vec);
}

}

Answer 1:

这样做的一个方法使用重力作为正常的平台这样的

transform.rotation = Quaternion.LookRotation(Input.acceleration, Vector3.up);

您可能必须打开,以便向下向前取决于什么是向前发展的平台上加速轴。 这是我的猜想

Vector3 forward = new Vector3(-Input.acceleration.y, Input.acceleration.x, Input.acceleration.z);
transform.rotation = Quaternion.LookRotation(forward, Vector3.up);

还要注意的是,当设备仍在,这只会是正确的。 从一边到另一边移动将使你的平台上的旋转,这可能是不可取的。



文章来源: unity 3d rotate the gameobject according to accelerometer