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

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

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

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


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

public class GunWeapon : MonoBehaviour {

    //发射子弹间隔
    public float rate = 0.2f;
    //子弹的实例化存储对象
    public GameObject bullet;

    void Start(){
        OpenFire();
    }

    public void OpenFire(){
        InvokeRepeating("fire", 1, rate);
    }
    //发射一枚子弹
    public void fire(){
        GameObject.Instantiate(bullet, transform.position, Quaternion.identity);
    }
}
介绍两个函数。

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

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

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

添加子弹


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

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

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

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

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


  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值