2016-12-06 30 views
1

我正在创建一个自上而下的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游戏中看起来就像静止不动。如何解决这个问题?

+0

您是否尝试过除transform.forward以外的其他任何方向? – Maakep

+0

那么如何用'transform.right'沿着局部x轴移动呢? – Serlite

回答

2

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

这里是静态佣工的Vector3从类型列表:

  • 背速记书写的Vector3(0,0,-1)。
  • down写入Vector3(0,-1,0)的速记。
  • forward写入Vector3(0,0,1)的简写形式。
  • left写入Vector3(-1,0,0)的速记。
  • 其中一个用于写入Vector3(1,1,1)的速记。
  • 右写入Vector3(1,0,0)的速记。
  • up写入Vector3(0,1,0)的速记。
  • 零写入Vector3(0,0,0)的速记。

编辑下面的评论:

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

想想这样吧,比如说你坐在办公桌前,桌子就是世界空间,从你的角度来看,你可以观察到的是3个维度。你可以看到左右(x轴),上下(y轴)和从你的角度看(z轴)。如果你想向前移动一个回形针,那么从向下看z轴的时候就会是Vector3.up,但是如果你站着向下看着桌子(就像摄像机在世界空间之上一样),那么为了使纸张剪辑向前移动(向上),你会使用Vector3.forward。

这就是为什么我说什么代表您的相机设置,因为如果没有指定您的场景可以在任何安排。

+0

我需要将“变换”更改为“Vector3”+以上。我不明白“变换”和“Vector3”之间的区别。 – Abdou023

+0

这实际上非常有帮助。谢谢。 – Abdou023

相关问题