RigidBody在Space Shooter教程中自动移动到左上角

时间:2016-05-25 22:55:09

标签: unity5

我正在关注Unity网站上的太空射击教程。

我已经完成了玩家对象的移动动作。

当我开始游戏时,即使没有输入,宇宙飞船也会自动移动到左上角。

我完全按照原样遵循了教程。即使资产商店中可用的已完成场景也存在同样的问题。

我正在使用Unity 5.3。

PlayerController.cs

using UnityEngine;
using System.Collections;

[System.Serializable]
public class Boundary
{
    public float xMin, xMax, zMin, zMax;


}


public class PlayerController : MonoBehaviour {


public float speed;
public Boundary boundary;
public float tilt;

// Use this for initialization
void FixedUpdate()
{
    float moveHorizontal = Input.GetAxis("Horizontal");
    float moveVertical = Input.GetAxis("Vertical");

    Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

    GetComponent<Rigidbody>().velocity = movement * speed;

    GetComponent<Rigidbody>().position = new Vector3(
        Mathf.Clamp(GetComponent<Rigidbody>().position.x,boundary.xMin, boundary.xMax),  
        0.0f,
        Mathf.Clamp(GetComponent<Rigidbody>().position.z, boundary.zMin, boundary.zMax));


    GetComponent<Rigidbody>().rotation = Quaternion.Euler(0,0, GetComponent<Rigidbody>().velocity.x * -tilt);
}
}

enter image description here

1 个答案:

答案 0 :(得分:2)

你的代码似乎是正确的,因为你说演示场景是一样的,我想问题来自你的Axis输入:线条添加运动

float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");

使用名为HorizontalVertical的轴。在您的统一实例上,这些输入可能链接到发送事件的设备(您可能插入了控制器......)

要测试此项,您可以在阅读输入的下方添加以下行:

float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Debug.Log("Movement: " + moveHorizontal + ", " + moveVertical); // <-- add this

这会将您获得的值写为输入。如果你不接触任何东西,它们应该为零。如果它们不为零,请转到Edit -> Project Settings -> Input,您将看到键盘,鼠标和其他控制器如何链接到Unity中的事件,例如HorizontalVertical

有关输入管理器的详细信息,请参阅http://docs.unity3d.com/Manual/class-InputManager.html

祝你好运!