我怎样才能让我的宇宙飞船前进?

时间:2015-09-21 16:36:53

标签: c# unity3d

我试图创造一个" Astroids"这种游戏,只是通过键盘上的左右键添加了转身:

if( Input.GetKey("left"))
{
    GameObject.Find("ship").transform.Rotate(Vector3.forward * 1);
}

if (Input.GetKey("right"))
{
    GameObject.Find("ship").transform.Rotate(Vector3.forward * -1);
}

但为了向前迈进,我必须考虑到目前船的轮换。我该怎么做?

if (Input.GetKey("up"))
{
    // move forward
}

我是否必须计算余弦和正弦,我该如何应用它们?

2 个答案:

答案 0 :(得分:1)

首先缓存您的ship变量

float speed = 10f;
Transform ship = GameObject.Find("ship").transform;

if( Input.GetKey("left"))
{
    ship.Rotate(Vector3.forward * 1);
}

if (Input.GetKey("right"))
{
    ship.Rotate(Vector3.forward * -1);
}
if (Input.GetKey("up"))
{
    // move forward
    ship.Translate(ship.forward * speed * Time.deltaTime)
}

答案 1 :(得分:0)

我使用了刚性的addforce函数,它运行得非常好。还有它的2d版本。查看此处的文档

http://docs.unity3d.com/ScriptReference/Rigidbody2D.AddForce.html

非常有用:)