我的子弹不断上升

时间:2016-04-04 03:47:40

标签: c# 2d unity5 rigid-bodies

我的子弹不停地开火 我已经用以下方式实现了一个子弹,但它似乎只是上升,我做错了什么?

public class Player1Controls : MonoBehaviour {

 // Update is called once per frame 
 public float speed;
 Rigidbody2D player;
 public float health;
 private int state;
 public Rigidbody2D Bullet;
 public GameObject Gun;
 void Start ()
 {
     player = GetComponent<Rigidbody2D>();
 }
void Update ()
 {
     if (Input.GetKeyDown(KeyCode.Space))
     {
     Rigidbody2D bullet1 = (Rigidbody2D)Instantiate (Bullet, Gun.transform.position,Quaternion.identity);
 }
 if(Input.GetKey(KeyCode.W))
 {
     //transform.Translate(Vector2.up * speed);
     player.velocity =(Vector2.up*speed);
     state = 1;
 }

public class MoveBullet:MonoBehaviour {

 public float speed;
 // Update is called once per frame
 void Update () {
     Vector3 pos = transform.position;
     Vector3 vel = new Vector3(0, speed * Time.deltaTime, 0);
     pos = pos + transform.rotation * vel;
     transform.position = pos;
 }

2 个答案:

答案 0 :(得分:1)

在vector3上使用x和z。统一y是向上而z是“向前”(进入场景)

答案 1 :(得分:0)

你的子弹向上射击(好像武器指向天空)?或者目标稍微偏离,子弹最终会高于应有的程度?如果您是第一种情况,请确保您的变量Vector3 vel的y和z坐标与您的相机相匹配。对于X和Z,其值为零,在Y中为非零值。如果您的场景设置为Z轴指向天空(并且Y轴指向屏幕),则可能没问题。但是,如果你的Z指向,说出屏幕,你的Y指向天空,那将导致你所看到的行为。

如果有帮助,请告诉我。