2016-12-21 7 views
1

私はちょうど立方体である私のプレーヤーを動こうとしています。動きは、前方、後方、左側、右側に移動することが可能でなければなりません。私が左または右に動いているとき、私はまだ前向きに回転しません。問題は、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( "Horizo​​ntal")が動作しているとのことがありますが、アンドロイド携帯を傾けることでプレーヤーがどのように動くのか理解できません。

答えて

2

携帯電話は一般的にが深さで、y-axisが高さで、x-axisが幅であるようなゲームの向きを持っています。 オブジェクトを移動したくないので、y-axis。 x軸とz軸の入力を使用するだけです。
この(剛体であなたのプレーヤーにそれを添付)してみてください:水平および垂直軸はcheck this

+0

を実装する方法を理解するための

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); } 

は、あなたの答えをいただき、ありがとうございます。しかし、前に私が言ったように、私はそれを動作させることができません。私のプレーヤーはそのコードで動かないからです。私はおそらくそれを修正するのは簡単だが、私はそれを得ることはできません知っている。 InputManager(unity)で何かを変更する必要がありますか? –

関連する問題