位置: 编程技术 - 正文

游戏中跟踪弹算法(跟踪子弹)

编辑:rootadmin
在飞行射击游戏中,恐怕没有一个游戏不用到跟踪算法的。比如在玩街机的时候,是不是经常挂于BOSS的"跟踪弹"?  这是怎样实现的呢?很简单,只要有高中的一点数学知识就行了!   首先回忆几个三角函数sin,cos,tan(tg),arctan(arctg)  sin(x)对边/斜边。在1,2项限为正,3,4项限为负  cos(x)邻边/斜边。在1,4项限为正,2,3项限为负  tan(x)对边/邻边。在1,3项限为正,2,4项限为负   考虑到游戏里面的坐标系如下所示:     假设敌人子弹的坐标为slug.x,slug.y,子弹的速度为slug.speed(全部是double型)  上面的三角形的斜边就代表子弹的速度,则子弹每次移动的时候座标的改变为:  slug.x &#;= slug.speed * cos(theta);  slug.y &#;= slug.speed * sin(theta);   在敌人子弹向你发射过来的时候,首先要计算子弹位置与你所在的位置所夹的角度theta  简单计算就是:  double deltax = player.x - slug.x; // 注意,、是以主角位置为起点 在上图中表示就是x1-x0  double deltay = player.y - slug.y; // y1-y0   为了防止在相除的时候分母为0,做一个判断,使分母近&#;为0,究竟是负的近&#;还是正的近&#;呢?这就需要比较子弹和你的Y坐标谁大谁小了。  if( deltax == 0 )  {  if( player.y = slug.y ) // 子弹需要下移  deltax = 0.;  else // 子弹需要上移  deltax = -0.;  }  同理,对deltay作判断  if( deltay == 0 )  {  if( player.x = slug.x ) // 子弹需要右移  deltay = 0.;  else // 子弹需要左移  deltay = -0.;  }  现在对角度所处的项限作判断  if( deltax0 deltay0 )  angle = atan(fabs(deltay/deltax)); // 第一项限  else if( deltax0 deltay0 )  angle = -atan(fabs(deltay/deltax)) // 第二项限  else if( deltax0 deltay0 )   angle = &#;atan(fabs(deltay/deltax)) // 第三项限  else  angle = 2-atan(fabs(deltay/deltax)) // 第四项限  其中取3.(呵呵,别忘记近&#;哦)  好了,现在已经得到正确的方向了,可以计算子弹坐标了!  slug.x &#;= slug.speed * cos(theta);  slug.y &#;= slug.speed * sin(theta);  这样,每次子弹移动之前做一下判断,重新计算角度,怎么样?"跟踪弹"出来了吧?  

推荐整理分享游戏中跟踪弹算法(跟踪子弹),希望有所帮助,仅作参考,欢迎阅读内容。

游戏中跟踪弹算法(跟踪子弹)

文章相关热门搜索词:一个可以有跟踪子弹的游戏,跟踪子弹,带有跟踪导弹的游戏有哪些,跟踪弹怎么画,有跟踪弹吗,带有跟踪导弹的游戏有哪些,一个可以有跟踪子弹的游戏,带有跟踪导弹的游戏有哪些,内容如对您有帮助,希望把文章链接给更多的朋友!

Unity3D游戏开发之Unity3D动画与Mecanim动画系统 Mecanim是Unity新增的动画系统,其功能强大而灵活,让人类和非人类角色栩栩如生。Mecanim的重定向极大的提供了工作效率,而且占用极少CPU周期。使用从U

教你怎样用unity3d发布一个Android的apk文件.绝对精细 1.首先呢。就是必要的一些软件工具了。不用说unity3d这个是必要的(觉得这是不是废话)。然后就是。我们的一些运行的环境了。Java(jdk).Android模拟器(

Unity3D游戏开发之使用场景Ⅰ:建立类型映射 总的来看,Unity的使用场景主要有以下几个:建立类型映射用于单例模式用于依赖注入接下来,将逐一介绍各使用场景。在创建对象时,毫无疑问,类型

标签: 跟踪子弹

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

上一篇:Unity3D的iTween

下一篇:Unity3D游戏开发之Unity3D动画与Mecanim动画系统(Unity3D游戏开发标准教程)

  • 二手房交易税费2023新规定
  • 来料加工与进料加工的相似之处有
  • 实收资本怎么交所得税
  • 免税发票是增值税发票吗
  • 科技人员股权奖励
  • 归集研发费用时怎么计算
  • 资产负债表中无形资产是原值还是净值
  • 成品盘盈盘亏的会计分录
  • 审计人员的差旅费放在哪核算
  • 公立医院固定资产贷款相关规定
  • 卖股票为什么要留一手
  • 出口业务增值税免抵税额
  • 企业的福利费如何使用
  • 公司注销后资产属于谁
  • 公司零报税需要会计吗
  • 留存收益转增股本,另一方公司怎么做账
  • 以前年度损益调整借贷方向
  • 自产自用设备税务处理
  • 非正常损失进项税额转出计算
  • 工程款中包含增值税怎么处理
  • 非金融企业之间的借款合同要交印花税吗
  • 小企业会计准则会计科目表
  • 精英主板设置u盘启动
  • 如何修改mac系统密码
  • win10系统声音有杂音
  • 内部控制的类型有哪些
  • 如何调整往来账款
  • 存出保证金计入货币资金吗
  • 经营性流动负债计算公式
  • 印花税申报后怎么缴费
  • 期货公司向客户收取的保证金属于谁所有
  • 哪些发票不可以通过数电平台开具
  • PHP:clearstatcache()的用法_Filesystem函数
  • 固定资产自行建造的会计处理
  • 商业银行提取的贷款损失准备金
  • 上传图片照片
  • 通往萨卡洛布拉的火车
  • vuecli非根目录打包
  • print函数php
  • 未分配利润的核算内容
  • 外经证逾期未核销
  • 企业办理工程价款流程
  • 对供应商的罚款通知怎么写
  • sqlserver2019查看表
  • 支付长期借款利息时,应借记什么账户
  • 投资回收期计算公式例题
  • 商品编码原则是指什么
  • 民办非注销原因如何写
  • 红冲的发票能不能取消
  • 差旅费报销过程中会计和出纳分别做什么
  • 其他综合收益什么情况下转入留存收益
  • 小规模纳税人出租不动产优惠政策
  • 工业企业外购存货成本有
  • 支付结算办法实施细则最新
  • 微信收款如何做账报税
  • 如何进行税前扣除
  • 发票的几种分类
  • 什么是固定资产清理
  • mysql 5.7.13 winx64安装配置方法图文教程
  • 解读分布式光伏开发前期工作要点及措施
  • window 开机启动
  • linux自动清理内存软件
  • winpe如何安装驱动
  • windows log在哪里
  • Win10 Mobile RedStone预览版14267已知问题与修复内容汇总
  • 简易bmp图片读取软件
  • 模板创造
  • 详谈左晖
  • python开发的程序
  • [置顶]bilinovel
  • ThreadPool.RegisterWaitForSingleObject 设置等待超时事件
  • 安装了python2.7和3.6怎么切换版本
  • 你真的了解摩羯座吗
  • jquery complete
  • python设计内容
  • 江苏发票真伪查询网站
  • 湖南城乡居民医疗保险咨询电话
  • 如何打印个人所得税明细
  • 海口地税局领导班子
  • 北京税务局开票系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设