Unity3D之太空大战二
来源:互联网 发布:2017社会发展数据 编辑:程序博客网 时间:2024/04/28 04:45
接下来,我们要使飞船能发射子弹,所以我们要创建子弹模型,在资源中找到rocket.fbx模型文件,拖到Hierarchy中,这样就创建了子弹的游戏体,当然对于重复使用的游戏体,我们要做成预设体Prefab,我们打开菜单栏Assets->Create->Prefab,来创建一个新的预设体,如下图:
我们命名为Rocket,
那么子弹,飞船要发射,所以我们新建一个cs脚本,命名为Rocket,代码如下:
把子弹脚本挂到子弹prefab上,然后我们再修改Player脚本,当我们按下空格或是鼠标左键的时候,就发射子弹,代码如下:这样飞船就可以发射子弹了,但现在发射子弹的频率太快,所以我们定义一个变量来控制频率,每隔0.1秒发射一次,代码如下:效果如下:
接下来我们创建简单的敌人,不能发射子弹,只能左右旋转沿弧线前进,跟前面创建子弹一样,我们找到Enemy.fbx文件拖到Hierarchy中,然后创建敌人Prefab,并命名为Enemy,如下图:
然后我们创建cs脚本,命名为Enemy,代码如下:
这里我们每隔3秒改变敌人一次旋转方向,我们把脚本挂到敌人prefab上,运行如下图:不过现在飞船发射子弹也打不到敌人,飞船跟敌人之间也没任何交互,这里没有任何碰撞检测,所以接下来,我们添加物理碰撞,我们先给敌人添加碰撞体跟刚体,所有需要参与物理计算的游戏体都需要有一个刚体组件才能正常工作,
然后box Collider属性中,我们选中Is Trigger,使其具有触发作用,在rigidbody组件中,取消选中Use Gravity去掉重力影响,然后选中Is Kinematic使游戏体的运动不受物理模拟影响,如下图:
然后参考前面的方法给主角飞船跟子弹都添加物理组件,
最后,为了区别到这些组件,我们给它们设置Tag标示,选择Edit->Project Settings->Tag and Layers,
我们设置如下tag,
接下来我们就修改相关脚本,首页打开Enemy.cs脚本,添加一个生命属性:
然后添加一个OnTriggerEnter函数,在碰撞体相互接触时会被触发,然后打开Rocket.cs脚本,也添加一个OnTriggerEnter函数,如果子弹撞到敌人,销毁自身最好修改Player.cs,添加一个生命属性,然后也添加一个OnTriggerEnter函数,主角飞船与任何已方子弹以外的碰撞体相撞都会损失一点生命,生命为0时销毁自身,运行,如下:
最后,我们判断下出界,当敌人出界时,就销毁自身,同上面一样,创建一个空的游戏体,命名为bound,添加一个bound的tag,和相关物理组件,
属性如下:
修改Enmey.cs脚本
- Unity3D之太空大战二
- Unity3D之太空大战二
- Unity3D之太空大战一
- Unity3D之太空大战一
- 太空大战之太空滚动
- Unity3D 太空大战——整理
- Unity3d之坦克大战(二)
- Unity3d之坦克大战(二)
- 太空大战之技术点分析 技术
- Unity3D【火星大战二】
- Unity3d坦克大战(二)
- SpaceShootGame(太空大战)
- 太空大战1.0
- Unity3D项目之《坦克大战》
- Unity入门游戏太空大战
- Unity3d之坦克大战(三)
- Unity3D学习之(坦克大战解析)
- Unity学习之路(一)太空大战类游戏制作1
- iOS绘制图形(三角形)
- 【jzoj4886】【字符串】【动态规划】【kmp】
- 心得
- 初步理解Service组件
- IntentService+retrofit2.0下载文件、更新APP(项目一部分demo)
- Unity3D之太空大战二
- 银行 加强版
- Linux中常用操作命令
- 费米问题-如何估算芝加哥的钢琴调音师的人数?
- jquery中prop()方法和attr()方法的区别
- C语言:猴子吃桃问题。
- IdWorker
- Android 热修复方案分析
- elk部署配置,收集nginx和tomcat日志