float h=Input("Horizontal");
float v=Input("Vertical");
transform.Translate(new Vertor3(h,v,0)*Time.deltaTime*speed);
float h=Input("Horizontal");
float v=Input("Vertical");
transform.Translate(new Vertor3(h,v,0)*Time.deltaTime*speed);
Vertical
public class shoot : MonoBehaviour {
public GameObject Bullet;
public float Speed = 5;
public float shootSpeed = 2; //表示每秒发射子弹的个数 俗称子弹的发射速率
public float shootTime = 0; //表示子弹的生成时间间隔 用来控制子弹的发射间隔
public float shootTimeInterval = 0;//表示子弹的间隔这个是一个固定的时间
// Use this for initialization
void Start() {
//GameObject.Instantiate(bullet, transform.position, transform.rotation);
shootTimeInterval = 1 / shootSpeed; //初始化这个时间的子弹的间隔时间
}
// Update is called once per frame
void Update()
{
shootTime += Time.deltaTime; //让子弹的时间控制器不断加等时间间隔
if (shootTime > shootTimeInterval)
{ //如果子弹发射的时间间隔超过时间控制器 那么我们就发射子弹
shootTime -= shootTimeInterval; //让子弹的时间间隔回复到初始的情况下
if (Input.GetMouseButton(0))
{
GameObject b = GameObject.Instantiate(Bullet, transform.position, transform.rotation);
Rigidbody rgb = b.GetComponent<Rigidbody>();
//rgb.velocity /*速度方向*/= transform.forward*Speed;原来代码,就算加上*Time.deltaTime,也无法跟正常射击一样,会全部卡在一个点上,收到物理的影响。
rgb.velocity /*速度方向*/= transform.TransformDirection/*变换方向*/(Vector3.forward/*指Z轴方向*/ * Speed);
}
}
}
}
设置墙体,设置子弹,设置相机位置,子弹从相机位置产生(Instantiate) (子弹和墙需有刚体和碰撞体),给子弹速度(velocity)控制相机左右及上下移动即可(transform.Translate)
。。