将子弹沿其旋转方向移动

时间:2016-12-06 19:41:13

标签: unity3d rotation projectile

我正在创建一个自上而下的2D游戏。以下是使我的播放器实例化子弹的代码:

public GameObject bullet;
void Update () 
    {
        if (Input.GetButton("Fire1") && Time.time > nextFire)
        {
            nextFire = Time.time + fireRate;
            Instantiate(bullet, transform.position, transform.rotation);
        }   
    }

这是附加到子弹上的脚本,以便移动:

void Update () 
    {
        transform.Translate(transform.forward * Time.deltaTime * speed);
    }

似乎子弹只在Z轴上移动,在2D游戏中看起来好像它静止不动。如何解决?

1 个答案:

答案 0 :(得分:3)

Vector3.forward与新的Vector3(0,0,1)相同,这意味着它在z轴上是正的。从下面选择代表您的相机设置。

以下是Vector3类型的静态助手列表:

  • back写入Vector3(0,0,-1)的简写。
  • down写入Vector3(0,-1,0)的简写。
  • 前锋写作Vector3(0,0,1)的简写。
  • 左写速记用于写入Vector3(-1,0,0)。
  • 写一个Vector3(1,1,1)的简写。
  • right写入Vector3(1,0,0)的简写。
  • up写入Vector3(0,1,0)的简写。
  • 0写入Vector3(0,0,0)的简写。

编辑以下评论:

变换是您的GameObjects位置,旋转和缩放。当您使用translate方法时,您正在使用Vector3在一个方向上移动GameObject的位置(在您的情况下调整为帧之间的deltaTime),因此取决于方向(是否在X / Y / Z轴上查看)游戏对象相对于世界空间(通常,除非调整relativeTo)并且具有特定的轴作为整体,你的GameObject需要相对于该空间移动。

以这种方式思考,比如你坐在办公桌前,桌子就是世界空间,从你的角度来看,你可以观察到的是3个维度。您可以向左和向右(x轴),向上和向下(y轴)以及从您的视角向前(z轴)看到。如果你想向前移动一个回形针,那就是Vector3.up,因为你盯着z轴,但是如果你站着看着桌子(就像相机在世界空间之上),那么为了制作纸张剪辑向前移动(向上)你会使用Vector3.forward。

这就是为什么我陈述了代表你的相机设置的原因,因为你的场景可以是任何安排,如果没有指定的话。