我正在尝试移动我的播放器,这只是一个立方体。这些动作应该可以向前,向后,向左和向右移动。当我向左或向右移动时,我仍然会向前看而不是旋转。问题是我无法理解如何使用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手机来移动。
答案 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