unity3d开发 打飞机小游戏(三)(飞机子弹设置)

继续上一期的场景哈,我们会发现飞机好像在动了,但是没子弹怎么玩啊?

于是呢我们这次就把子弹给添加上,首先打开image资源文件呢看到有两种子弹,先布置一下在飞机的哪里发射比较好看呢,大概我布置的就是这样了,位置是随便定的。这里可能有些同学把子弹模型拖进去之后发现看不见了,可能是因为你的layer设置问题啊,改一下就可以了。

然后呢我们在Assets下新建一个文件夹叫prefabs,把两个子弹拖进去,prefabs是什么呢?其实就是一个未实例化的对象,啥意思呢,就像你有一把枪,枪里面还没发射出去的子弹就叫做未实例化的,你需要开枪的时候就实例化一个子弹出来的意思


然后呢我们就需要设置发射子弹的地方啦,首先选中你的飞机,然后GameObject选择Create Empty Child创建一个空的儿子,把它拖到你刚刚想发射子弹的地方就可以啦,Child是包含在飞机中的,你可以看成是飞机上的一部分,你把飞机拖动,那么它的儿子们也是会一起移动的,就是实现绑定的功能嘛。    然后呢它还是不会发射子弹呀?我们通过脚本来控制它

[csharp]  view plain  copy
  1. public class GunWeapon : MonoBehaviour {  
  2.   
  3.     //发射子弹间隔  
  4.     public float rate = 0.2f;  
  5.     //子弹的实例化存储对象  
  6.     public GameObject bullet;  
  7.   
  8.     void Start(){  
  9.         OpenFire();  
  10.     }  
  11.   
  12.     public void OpenFire(){  
  13.         InvokeRepeating("fire", 1, rate);  
  14.     }  
  15.     //发射一枚子弹  
  16.     public void fire(){  
  17.         GameObject.Instantiate(bullet, transform.position, Quaternion.identity);  
  18.     }  
  19. }  
介绍两个函数。

一个是非常常用的实例化函数GameObject.Instantiate()方法,它的三个参数分别是实例化对象的存储空间,实例化出来的坐标,实例化出来的角度。     这里我们将实例化出来的子弹放在bullet上,位置就是当前位置嘛,而旋转角度上的参数是一个四元数,记住这个参数就是角度不变的意思就好了

InvokeRepeating()方法,实现函数重复调用的功能,三个参数分别是函数名(string类型),开始时间,间隔时间。

我们把写好的脚本挂载到三个子儿子上,并且把子弹的prefabs拖到这个脚本里面就完成啦。

添加子弹


下一步我们要为子弹写一个脚本,因为它本身是没有任何属性的,也就是发射出去没有速度的,我们也需要一个脚本来控制子弹

下面的代码都比较简单就不解释了,至于3.91f是怎么得出来的呢,你可以先不写,然后运行一下在Scence视图下看看到多少会飞出你的视野,那就是多少了,飞出去的子弹也不会再显示回来了,所以就把它销毁掉,不然的话随着时间过去。。。你的电脑会爆炸的。。

[csharp]  view plain  copy
  1. public class Bullet : MonoBehaviour {  
  2.     //子弹飞行速度  
  3.     public float Speed = 4;  
  4.       
  5.     // Update is called once per frame  
  6.     void Update () {  
  7.         transform.Translate(Vector3.up*Speed*Time.deltaTime);  
  8.         if (transform.position.y >= 3.91f)        {  
  9.             Destroy(this.gameObject);  
  10.         }  
  11.     }  
  12. }  
写完后呢把脚本直接挂载到子弹的prefabs上,那么场景里面对应的所有子弹也都会挂上这个脚本的了

运行一下,子弹就刷刷刷出来了

是不是很酷呢?感觉动手试一试吧!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值