位置: 编程技术 - 正文

子弹追踪和协程应用(子弹追踪原理)

编辑:rootadmin

推荐整理分享子弹追踪和协程应用(子弹追踪原理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:子弹追踪模块,子弹追踪挂软件,子弹追踪什么意思,子弹追踪什么意思,子弹追踪思路,子弹追踪和协程追击区别,ce子弹追踪,ce子弹追踪,内容如对您有帮助,希望把文章链接给更多的朋友!

unity学习,希望我的博客能给喜欢unity的朋友带来帮助

今天我们就这几天根据飞机大战个人重做的小项目进行了面试,面试中我遇到了好多技术上的问题和理解上的问题,在这总结一下,以便以后的参考。

场景如图:

1、项目包含的模块:

登陆模块、我方模块、敌方模块、游戏地形模块、子弹模块

2、各个模块的功能和功能所用的技术(功能之能做什么,不是游戏过程):

功能:登陆模块:可以跳转到游戏界面

我方模块:可以前后左右移动,发射子弹,得分,销毁,减少生命&#;

敌方模块:可以移动,发射子弹,销毁,克隆,子弹追踪

技术:GUI(文字显示,按钮点击,暂停开始);

位移(我方和敌方的移动);

克隆(子弹、敌方的克隆);

销毁(子弹、我方、敌方的销毁);

协程(敌方一波一波的自动出现);

循环判断(得分、减少生命&#;、游戏的暂停和继续、敌方和我方的销毁);

音频(设置子弹发出的声音,敌方和我方爆炸的声音,背景音乐);

键盘判断(我方的位移和发射子弹和游戏的暂停(esc暂停));

鼠标判断(我方的发射子弹,跳转界面和游戏继续);

触发器检测(双方子弹互相打中和敌我双方相撞)

子弹追踪和协程应用(子弹追踪原理)

3、具体知识点:子弹追踪和协程技术

子弹追踪:

void Update() { transform.Translate(0, 0, speed * Time.deltaTime); timer -= Time.deltaTime; if (timer <= 0) { timer = 1; if (myTank != null) { Vector3 pos = enemyTank.position - myTank.position; 完成子弹的追踪,所用方法为transform . Translate GameObject.Instantiate(enemyRocket, enemyTank.position&#;new Vector3(0,,0), Quaternion.LookRotation(pos)); } } }

协程技术:

定义:

协同程序,即在主程序运行时同时开启另一段逻辑处理,来协同当前程序的执行。换句话说,开启协同程序就是开启一个线程。

协同程序的开启:

在Unity3D中,使用MonoBehaviour.StartCoroutine方法即可开启一个协同程序,也就是说该方法必须在MonoBehaviour或继承于MonoBehaviour的类中调用。

在Unity3D中,使用StartCoroutine(string methodName)和StartCoroutine(IEnumerator routine)都可以开启一个线程。区别在于使用字符串作为参数可以开启线程并在线程结束前终止线程,相反使用IEnumerator 作为参数只能等待线程的结束而不能随时终止(除非使用StopAllCoroutines()方法);另外使用字符串作为参数时,开启线程时最多只能传递 一个参数,并且性能消耗会更大一点,而使用IEnumerator 作为参数则没有这个限制。

协同程序的返回类型为Coroutine类型。在Unity3D中,Coroutine类继承于YieldInstruction,所以,协同程序的返回类型只能为null、等待的帧数(frame)以及等待的时间。

一个协同程序在执行过程中,可以在任意位置使用yield语句。yield的返回&#;控制何时恢复协同程序向下执行。协同程序在对象自有帧执行过程中堪称优秀。协同程序在性能上没有更多的开销。StartCoroutine函数是立刻返回的,但是yield可以延迟果。直到协同程序执行完毕。

在C#下,你必须调用StartCoroutine。

应用:

public GameObject[] Enemytank;//声明对象数组 int number = 5;void Start() { StartCoroutine("Spawn"); }IEnumerator Spawn() { yield return new WaitForSeconds(5f);//开始等待5秒 while (true) { while (number > 0) { GameObject go = Enemytank[Random.Range(0, Enemytank.Length)]; Vector3 pos = new Vector3(Random.Range(, ), f, f); GameObject.Instantiate(go, pos, transform.rotation); yield return new WaitForSeconds(f);//每隔两秒克隆1个 number--; } number = 5; yield return new WaitForSeconds(4f);//每隔4秒开始下一波 } }

这样就完成了敌方的一波一波的克隆和出现。

更多精彩请点击

Unity WWW网络动态加载和储存在本地 原文地址:

Spline Power 场景插件 插件主要用于构建由重复片段组成的物体,例如赛道:创作者可以使赛道呈现不同形态SplineFormerSegmentMesh:重复片段的模型MeshFiter:片段的材质Caps:片段

Unity中实现全局管理类的几种方式 如何在Unity中实现全局管理类?由于Unity脚本的运行机制和面向组件编程(COP)的思想,实现起来和普通的方式略有差别。第一种方式是使用静态类。适

标签: 子弹追踪原理

本文链接地址:https://www.jiuchutong.com/biancheng/377342.html 转载请保留说明!

上一篇:数据库列的基本操作(数据库的列名是什么)

下一篇:Unity WWW网络动态加载和储存在本地

  • php生成PDF格式文件并且加密(php生成php文件)

    php生成PDF格式文件并且加密(php生成php文件)

  • php 变量未定义等错误的解决方法(php未定义数组下标0)

    php 变量未定义等错误的解决方法(php未定义数组下标0)

  • 深入浅析SQL封装、多态与重载(sql 封装)

    特点:单继承 一个子类只能有一个父类,一个父类可以有多个子类 (所有父类都是object)

    base关键字

    sealed关键字:密封类 该类不可以被继承

    部分类:partial 可以将一个类拆分成多个部分,分别放在多个文件内

    namespace 命名空间 相当于虚拟文件夹

    (3)多态:

    1.编译多态

    函数重载

    2.运行多态

    概念:当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写,在调用该方法的时候表现出的不同就称为多态

    条件:必须要有继承 父类引用指向子类实例 子类必须对父类的方法进重写

    里氏代换原则:如果有一个地方需要使用到父类对象,那么你可以将一个子类对象给他

    1.函数重载

    函数重载需要的条件:函数名要相同,参数的个数或者参数的类型不同

    2.this关键字

    虽然写在类里面,但不是属于类的,而是属于该对象的

    一般来说在类里面 this关键字是可以省略的,但是如果有一个方法形参名字和成员名字重复,这时候再调用该对象里面的成员的时候需要加this关键字

    3. is关键字

    判断变量是不是属于某个类型

    4. as关键字

    转换类型(只能转换兼容类型,可以将子类对象转换为父类对象)

    5.继承

    子类可以继承父类的一切

    特点:单继承

    一个子类只能有一个父类 一个父类可以有多个子类

    C#特殊点:所有类的祖先都是object

    base关键字:在子类中代表父类对象,用法和this关键字相同

    如果父类有构造方法,那么子类也要有构造方法,如果父类构造需要参数,那么子类构造也必须有相应的参数。子类构造后面可以通过base调用父类的构造方法

    以上所述是小编给大家介绍的SQL封装、多态与重载,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!

    在Sql Server中调用外部EXE执行程序引发的问题 一、先开启xp_cmdshell打开外围应用配置器—功能的外围应用配置器—实例名DatabaseEnginexp_cmdshell—启用二、解决方法usemasterExecxp_cmdshell'mkdird:csj" class="img-responsive" alt="深入浅析SQL封装、多态与重载(sql 封装)">

    深入浅析SQL封装、多态与重载(sql 封装)

  • mysql5.7.17安装配置图文教程(mysql5.7.33安装配置教程)

    mysql5.7.17安装配置图文教程(mysql5.7.33安装配置教程)

  • smsvchost.exe是什么文件 电脑中Svchost.exe病毒解决办法

    smsvchost.exe是什么文件 电脑中Svchost.exe病毒解决办法

  • 11个检查Linux是否被入侵的方法(linux检查文件内容)

    11个检查Linux是否被入侵的方法(linux检查文件内容)

  • RAVMOND.exe - RAVMOND是什么进程.有什么作用

    RAVMOND.exe - RAVMOND是什么进程.有什么作用

  • win7系统点击计算机属性弹出

    win7系统点击计算机属性弹出"账户名与安全标识间无任何映射完成"的解决方法(win7系统点击计算机图标未响应)

  • Vsftpd+tcp_wrappers控制主机和用户访问

    Vsftpd+tcp_wrappers控制主机和用户访问

  • Shell脚本批量修改文件后缀名代码分享(shell批量处理文件)

    Shell脚本批量修改文件后缀名代码分享(shell批量处理文件)

  • 分公司和总公司不在一个区
  • 以前年度损益调整账务处理分录
  • 建筑公司办公室照片真实
  • 纳税调整增加额和递延所得税资产
  • etc发票开票中
  • 税控设备抵减增值税会计处理
  • 赠送的物业费需要交个税吗
  • 增值税预缴税金交错了怎么办
  • 企业支付投资者股利属于什么引起的财务活动
  • 结转税金为贷方怎么结转?
  • 公司聚餐费用标准
  • 预缴增值税附加税怎么算
  • 增值税发票委托公司开具
  • 没有缴纳社保怎么开证明
  • 生产企业出口退税的计算方法
  • 销售种子的税种有哪些税率为多少?
  • 废旧物资增值税税收优惠政策
  • 单品销售的方法
  • 背书出去的票据信息在哪里查询
  • 当年亏损可以用以前年度来弥补吗
  • 出售报废电脑要交什么税
  • 物业公司安装监控为了什么
  • 贷款利息可以抵扣吗
  • 增值税加计扣除是什么意思啊
  • 多缴增值税怎么退税
  • 个人投资到企业的资金入什么科目
  • 增值税收入和所得税收入不一致怎么办
  • 其他应付款包括应付职工薪酬吗
  • 融资租入固定资产改建支出计入
  • 国际货运运费的计算基础
  • 已计提月份的公式
  • 生产成本包括哪三类
  • 企业广告费的会计处理方法研究
  • win10系统关机后自动开机怎么办
  • 入账成本包括增值税税额吗
  • 客户申请退款商家拒绝退货退款会有什么效果
  • erl.exe是什么进程
  • 在途货物退货
  • php数据库删除数据
  • php判断useragent
  • 玄学2021
  • datetime2(7)
  • 增值税发票校验码在哪个位置
  • 产品检测费可以放入研发费用吗
  • 个体户分红需要申报吗
  • 进项发票是专票吗
  • sql server rollup函数
  • 背书是什么含义
  • 幼儿园的经费支出主要包括哪几个方面
  • 期末余额就是本年累计吗
  • 做账时实收资本减少应该记在那一栏
  • 企业员工福利费可以做什么
  • 保险工资单怎么开
  • 利润都为负数时增长比例怎么算
  • 公司研发项目立项
  • win8系统怎么关机
  • windows电源图标消失
  • 进程死锁原因
  • win10找不到打印机驱动
  • 教程图解
  • linux里find命令
  • eac.exe是什么
  • awk命令的功能是什么
  • windows8.1开机
  • 微软报错是什么意思
  • win102020h2版本
  • unix网络命令
  • 不同系统电脑能共享吗
  • win10更新已经下载好了能删除吗
  • cocos2dx官方文档
  • ie所有版本
  • jquery实现(textarea)placeholder自动换行
  • shell 字符操作
  • Node.js中的全局对象有
  • 怎么优化项目
  • python生成随机数表
  • [置顶] Deniz Saypinar
  • 土地增值税旧房转让计算方法
  • 宣传费是否要交消费税
  • 国税开票二维码图片
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设