unity3d开发 打飞机小游戏(三)(飞机子弹设置)
2018-03-07 15:45
267 查看
继续上一期的场景哈,我们会发现飞机好像在动了,但是没子弹怎么玩啊?于是呢我们这次就把子弹给添加上,首先打开image资源文件呢看到有两种子弹,先布置一下在飞机的哪里发射比较好看呢,
![](https://img-blog.csdn.net/20170119165037723?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjEwNTc4ODE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
大概我布置的就是这样了,位置是随便定的。这里可能有些同学把子弹模型拖进去之后发现看不见了,可能是因为你的layer设置问题啊,改一下就可以了。然后呢我们在Assets下新建一个文件夹叫prefabs,把两个子弹拖进去,prefabs是什么呢?其实就是一个未实例化的对象,啥意思呢,就像你有一把枪,枪里面还没发射出去的子弹就叫做未实例化的,你需要开枪的时候就实例化一个子弹出来的意思
![](https://img-blog.csdn.net/20170119165321271?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjEwNTc4ODE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
然后呢我们就需要设置发射子弹的地方啦,首先选中你的飞机,然后GameObject选择Create Empty Child创建一个空的儿子,把它拖到你刚刚想发射子弹的地方就可以啦,Child是包含在飞机中的,你可以看成是飞机上的一部分,你把飞机拖动,那么它的儿子们也是会一起移动的,就是实现绑定的功能嘛。 然后呢它还是不会发射子弹呀?我们通过脚本来控制它[csharp] view plain copypublic 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拖到这个脚本里面就完成啦。
![](https://img-blog.csdn.net/20170119171015450?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjEwNTc4ODE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
添加子弹
下一步我们要为子弹写一个脚本,因为它本身是没有任何属性的,也就是发射出去没有速度的,我们也需要一个脚本来控制子弹下面的代码都比较简单就不解释了,至于3.91f是怎么得出来的呢,你可以先不写,然后运行一下在Scence视图下看看到多少会飞出你的视野,那就是多少了,飞出去的子弹也不会再显示回来了,所以就把它销毁掉,不然的话随着时间过去。。。你的电脑会爆炸的。。[csharp] view plain copypublic 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上,那么场景里面对应的所有子弹也都会挂上这个脚本的了运行一下,子弹就刷刷刷出来了
![](https://img-blog.csdn.net/20170119171238083?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjEwNTc4ODE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
是不是很酷呢?感觉动手试一试吧!
大概我布置的就是这样了,位置是随便定的。这里可能有些同学把子弹模型拖进去之后发现看不见了,可能是因为你的layer设置问题啊,改一下就可以了。然后呢我们在Assets下新建一个文件夹叫prefabs,把两个子弹拖进去,prefabs是什么呢?其实就是一个未实例化的对象,啥意思呢,就像你有一把枪,枪里面还没发射出去的子弹就叫做未实例化的,你需要开枪的时候就实例化一个子弹出来的意思
然后呢我们就需要设置发射子弹的地方啦,首先选中你的飞机,然后GameObject选择Create Empty Child创建一个空的儿子,把它拖到你刚刚想发射子弹的地方就可以啦,Child是包含在飞机中的,你可以看成是飞机上的一部分,你把飞机拖动,那么它的儿子们也是会一起移动的,就是实现绑定的功能嘛。 然后呢它还是不会发射子弹呀?我们通过脚本来控制它[csharp] view plain copypublic 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视图下看看到多少会飞出你的视野,那就是多少了,飞出去的子弹也不会再显示回来了,所以就把它销毁掉,不然的话随着时间过去。。。你的电脑会爆炸的。。[csharp] view plain copypublic 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上,那么场景里面对应的所有子弹也都会挂上这个脚本的了运行一下,子弹就刷刷刷出来了
是不是很酷呢?感觉动手试一试吧!
相关文章推荐
- unity3d开发 打飞机小游戏(三)(飞机子弹设置)
- unity3d开发 打飞机小游戏(二)(飞机动画设置)
- unity3d开发 打飞机小游戏(五)(飞机移动/敌机死亡动画)
- unity3d开发 打飞机小游戏(一)(场景布置)
- unity3d开发 打飞机小游戏(四)(敌机/奖励物品生成)
- 用Quick3.3开发微信打飞机 (二) -------------------- 子弹和敌人的配置和创建
- 用Quick3.3简单开发微信打飞机 (三)----------------------------- 添加爆炸动画和子弹与敌机的碰撞
- [Unity3D]手机3D游戏开发:关于自定义Joystick的相关设置和脚本源码
- python-小游戏(打飞机)v1.2(三发子弹)
- Cocos2d-x 3.2 lua飞机大战开发实例(一)背景地图,飞机,子弹的封装,以及lua中定时器的使用
- unity3D游戏开发实战原创视频讲座系列3之全民飞机大战游戏开发
- unity3d开发android小游戏版本版本更新后自动安装功能的实现
- unity3d 安卓开发中怎么设置为横屏
- [Unity3D]Unity3D游戏开发之飞机大战项目解说
- 第三十九天 一乐在其中—Android的小游戏打飞机(三)让子弹飞
- Unity3d-打飞机:子弹实例化
- 【cocos2d-x-3.2】【高仿微信打飞机系列一】【开始界面 子弹生成 背景滑动 主飞机】
- 练习开发unity3d打飞机游戏
- Unity3d游戏开发框架-时间管理类,设置时间执行方法。
- Unity3d-打飞机:处理子弹