如何通过倾斜Android手机移动播放器?

时间:2016-12-21 03:09:50

标签: c# unity3d unity5

我正在尝试移动我的播放器,这只是一个立方体。这些动作应该可以向前,向后,向左和向右移动。当我向左或向右移动时,我仍然会向前看而不是旋转。问题是我无法理解如何使用AccelerometerInput让我的玩家不通过物理墙。我正在尝试制作一些简单的3D游戏。所以,如果有人能告诉我这是如何工作的,我很感激。这是代码:

public float speed = 10.0F;

 void FixedUpdate()
    {
        Vector3 dir = Vector3.zero; 
        dir.x = -Input.acceleration.y;
        dir.z = -Input.acceleration.x;
        if (dir.sqrMagnitude > 1) 
            dir.Normalize();

        dir *= Time.deltaTime; 
        transform.Translate(dir * speed); 
     }

我在线搜索了一些内容并且无法理解要使用的内容。有人说Input.GetAxis(“横向”)工作,但我无法理解我的播放器将如何通过倾斜Android手机来移动。

1 个答案:

答案 0 :(得分:2)

因此,移动电话通常具有游戏方向,z-axis是深度,y-axis是高度,x-axis是广度。 因为您不希望您的对象继续y-axis。您只需使用x和z轴的输入 尝试这个(用刚体将它附加到你的玩家):

using UnityEngine;
using System.Collections;

public class playerControl : MonoBehaviour {

    private Rigidbody rb;
    public float speed;

    void Start()    //first Frame
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        //physics calc of object
        float moveX = Input.GetAxis("Horizontal");
        float moveZ = Input.GetAxis("Vertical");

        Vector3 movement = new Vector3(moveX, 0.0f, moveZ);

        rb.AddForce(movement * speed);
    }

了解横轴和纵轴的实施方式check this