unity学习之路—飞机大战

这是我第一次进行博客写作,准备把前段时间写的《飞机大战》游戏的制作过程写出来,一方面为自己知识的梳理,另一方面是为分享,当然,前几次写出来的结果肯定很烂,只会有我自己看的。没关系。
飞机大战大概是在大二下学期做出来的,时间跨度是10天左右,其中是有8天在照着教程做此程序。
———————————————————————————————————————————

  • 游戏可运行程序:点击即可获得,花了半天时间才搞懂git的基础用法,/(ㄒoㄒ)/~~
  • 项目源码:好像放了也没有什么用,因为放上去之后我自己都够呛能组装到一起,unity的话除了代码以外还有其他的,全局变量,以及各个组件的配合等等需要设置。我会在下文中把关键部分写出

- 游戏思路:

1.先做场景。把背景做出来:背景用贴图来做,做出来是这样婶儿的:

然后让背景以速度V向上循环播放,(不然得做多大得场景才够用啊,?)
2.选取主角,同时控制主角移动,发射子弹(子弹的发射与移动)
3.选取敌机,控制敌机飞行,及发射子弹(子弹的发射与移动)。
4.飞行道具,及拾取道具的效果
5.主角、敌机、子弹、道具之间的逻辑交互和特效
6.超级道具的特效及效果制作
7.UI层,计分效果,生命值,拾取超级道具数,分数。的显示与更新。
8.boss的生成、失败的条件
9.游戏的打包。

  • 项目梳理:
  1. 导图片作为游戏背景:转化为精灵(Sprite)即可

2. 旋转的问题:

如果可以,在unity中的物理尽量少用旋转功能,因为如果对物体进行了旋转,那么物体的两个参考系(世界&自身坐标)都会发生相应的变化。
如在旋转-90之后,想向下移动,世界参考系,我只想到了如下代码解决。

 transform.Translate(transform.right * speed * Time.deltaTime,Space.World);

ps:vector3.forword和transform.forword之间区别。

3.方法定时执行:

InvokeRepeating("方法名",触发次数,频率);

该函数一般用于start方法中,不适合用于update里。

public class bulletCreate : MonoBehaviour {public GameObject bullet;public float rate = 0.3f;// Use this for initializationvoid Start () {cycle_start();// start();}public void start(){GameObject.Instantiate(bullet, transform.position, Quaternion.identity);}public void cycle_start(){InvokeRepeating("start", 1, rate);}
}

与之相似用法的还有MonoBehaviour.CancelInvoke 即取消延迟调用。
4. OnTriggerEnter与OnCollisionEnter区别
当A,B都添加刚体(Rigidbody)时
OnCollisionEnter方法
A和Bx相互碰撞时,无论是谁碰撞的谁,两者都能触发OnCollisionEnter方法,前提是两者都没有勾选isTrigger。
OnTriggerEnter方法
A或者B中有一个勾选isTrigger或者两者都勾选isTrigger后,A和B都可以触发OnTriggerEnter方法,但是不可进入OnCollisionEnter方法。
注意:

OnCollisionEnter方法必须是在两个碰撞物体都不勾选isTrigger的前提下才能进入,反之只要勾选一个isTrigger那么就能进入OnTriggerEnter方法。

OnCollisionEnter和OnTriggerEnter是冲突的不能同时存在的。

当A,B有一个添加了刚体(Rigidbody)时
OnCollisionEnter方法

若A添加了刚体,B没有添加刚体,A去碰撞B,则A会被弹开,B不会运动,此时A、B都会触发OnCollisionEnter方法。
若A添加了刚体,B没有添加刚体,B去碰撞A,不会发生碰撞效果,此时A和B都不会触发OnCollisionEnter方法。
OnTriggerEnter方法

只要A和B中有一个添加了刚体,无论谁碰撞谁,两者都会触发 OnTriggerEnter方法
总结:

OnCollisionEnter方法要求碰撞的发起方必须拥有刚体,而被碰撞方有没有刚体并不重要。OnTriggerEnter方法则对此没有要求,只需要碰撞双方有一个具有刚体即可触发。即刚体是一个判断是否实现碰撞的是与否的标志。
刚体对于系统的开销是很大的,所以在使用刚体时,根据可能发生的碰撞触发事件,适当的减少刚体,是一个减少资源消耗的好办法。 比如地面就可以不设置刚体,因为地面是永远不动的,把人物设置刚体就可以实现真实的物理碰撞效果了。

5.寻找游戏物体的某组件:

f=GameObject.Find("fenshu").GetComponent<Text>();

unity学习之路—飞机大战相关推荐

  1. 小甲鱼python游戏代码_【小甲鱼】零基础学习python pygame 飞机大战可执行源代码...

    [实例简介] [小甲鱼]零基础学习python pygame 飞机大战可执行源代码,觉得挺有意思,故此分享. [实例截图] [核心代码] 飞机大战 └── 飞机大战 ├── bullet.py ├── ...

  2. 太空射击unity工程素材文件 飞机大战 飞行射击游戏源码(C#,Unity2019.2.4f1)素材+源码 最新写的,demo简单版本

    飞机大战素材 太空大战unity工程文件 飞行射击游戏源码(C#,Unity2019.2.4f1)素材+源码 最新写的,demo简单版本 希望能对初学者提供帮助,代码根据教材以及out了的代码更新了, ...

  3. 用Unity快速开发太空飞机大战游戏实战经验分享(上)

    用unity动手先来试试一个简单的太空飞机大战吧.看官请继续往下... 最终效果,可控制己方战机,朝目标敌机发射子弹,打飞机~~~!伴随想象,慢慢呈现这个太空飞机大战游戏. 1. 新建打飞机unity ...

  4. Python学习笔记(飞机大战项目练习)---B站黑马程序员

    学习目标: 完整的一个小项目开发 提示:这里可以添加学习目标 例如: 一周Python入门项目实战知识 学习内容: 0 安装pygame 模块: PS C:\Users\tanyugen\Pychar ...

  5. Unity学习回忆--3D坦克大战

    2023年LPL春季赛季后赛正在火热进行中,你们心中的总冠军是哪支队伍呢?作为热爱游戏的程序猿,一起来聊聊你那些有意义的游戏开发经历吧! 前言 还记得大一的时候第一次接触编程,为了手写一个hello, ...

  6. 关于Unity的入门游戏飞机大战的开发(上)

    每个组件都是一个类的实例,要获得某个组件,要先创建一个同类型的组件类实例,然后把实例传引用过去,就可以对想要的组件实例进行操作. 做游戏一般创建一个逻辑节点,里面只管逻辑,再创建一个动画节点,里面有好 ...

  7. 物理引擎学习07-小游戏飞机大战

    到目前为止,碰撞检测的基本内容(狭义的碰撞检测)已经讲完了.广义的碰撞检测,我们到下一阶段再继续.本小节,在上节"碰撞反馈"的基础之上,扩展支持多物体间的碰撞检测.使用最简单的方法 ...

  8. Unity学习之路——VideoPlayer

    目标: 播放网络视频.本地视频:可以暂停.前后拖动.快进.快退.音量调节.下一个视频 环境: Unity5.6以上 VideoPlayer 介绍: Unity正式发布了5.6版本后,作为5.x版本的最 ...

  9. Python_从零开始学习_(52) 飞机大战_发射子弹

    1.  设计 英雄 和 子弹 类 英雄需求 游戏启动后,  英雄 出现在屏幕的 水平中间 位置,  距离 屏幕底部 120 像素 英雄 每隔 0.5 秒发射一次子弹,  每次 连发三枚子弹 英雄 默认 ...

最新文章

  1. 理解并解决IE的内存泄漏方式[翻译2]
  2. JavaScript 找出数组中重复的元素
  3. css网页布局中文字排版的属性和用法
  4. 【Linux】一步一步学Linux——fgrep命令(了解)(51)
  5. Apollo 2.0发布前 试乘百度L3、L4级自动驾驶汽车
  6. 《计量经济学》学习笔记之多元线性回归模型
  7. Linux系统中 安装Vmware Toolst工具
  8. 资产管理系统测试用例
  9. 基于stc15f2k60s2芯片单片机编程(串口超声波时间)
  10. 阿里云部署网站全流程(基于nodejs)
  11. C#中的InputBox
  12. 用python绘制派大星_1行代码搞定Latex公式编写,这个4.6M的Python小插件,写论文必备...
  13. 验房师专用验房项目验收内容
  14. layer 关闭一个弹窗打不开新的的弹窗_电脑小技巧关闭FF弹窗
  15. Java文本控件型号_小博老师解析Java核心技术 ——JSwing文本型控件
  16. va_start 用法
  17. 初探JavaBean
  18. Flutter利用第三方插件Screen调节屏幕亮度
  19. python数学计算函数_python之数学函数篇
  20. Android警告信息:Touch target size too small

热门文章

  1. 详解目标检测的评价指标
  2. kingbase8建表
  3. vue通过腾讯Web(H5)播放器 ,实现直播点播
  4. 硅谷再撒钱:公司暴力涨薪,HR“大打出手”,这场人才战富了谁?
  5. 打造自己个性的notepad ++
  6. java俄罗斯方块消除算法_Java 俄罗斯方块消行算法
  7. ECShop后台详解-模块管理、基本信息设置、商品展示、促销管理、订单管理、文章管理、报表统计、数据备份与还原
  8. 2020年各省二建房建挂靠价格汇总
  9. 小程序微商城-商铺管理后台
  10. 深圳中学招聘太激烈,不是名校博士别想挤破头进去!