我试图创造一个" 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
}
我是否必须计算余弦和正弦,我该如何应用它们?
答案 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
非常有用:)