位置: 编程技术 - 正文

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

编辑: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游戏开发标准教程)

  • 新会计准则低值易耗品属于哪个科目
  • 一般纳税人结转增值税的账务处理
  • 增值税有定额税率吗
  • 代建制规定
  • 粮食收购发票 票样
  • 补充医疗保险能自己交吗
  • 当期允许抵扣的农产品进项税额
  • 为别人开发票先收的税金怎么入帐?
  • 应收账款转销怎么记账
  • 企业破产清算怎么做账务处理实务工作
  • 利润表本月金额指的是什么
  • 分公司发生修理费能否在总公司列支?
  • 小企业怎么申请建设用地
  • 应付票据属于什么类账户
  • 增值税留抵税额账务处理
  • 残保金申报有什么用
  • 跨年度的暂估入库账务处理
  • 公司增加注册资金需要实缴吗
  • 以前年度的财务报表还可以找出来吗
  • 一年内到期的应付债券计入
  • 软件产品即征即退申请表
  • 企业广告费的会计处理方法研究
  • 中秋佳节发放职工福利的话语
  • 单位给个人报销计入什么科目
  • 租金收入缴纳个税
  • 营改增后租金如何交税
  • 科研的成果形式
  • fsdu.exe是什么程序?
  • 最早的操作系统被称为什么操作系统
  • 淘宝api接口
  • 兼职如何交税款
  • 身份证php编写
  • php加密后的代码能运行吗?
  • 风险敞口是指什么
  • 激光slam入门教程
  • css5个定位
  • java单点登录token
  • 行政性收费和事业性收费 财政局
  • opengl加阴影
  • 印花税的税率变动
  • mysql存储引擎有哪些区别
  • 小企业长期债券投资
  • 分销佣金账务处理流程
  • 行政单位基建账地质灾害评估报告计哪个科目
  • 以前年度多计提成本怎么处理
  • 工地的工人工资怎么入账
  • 城乡居民死亡后需要办理什么手续
  • 合同没签定金可以退的吗
  • 清算后剩余财产股东拒收怎么办
  • 应收票据和应付票据可以对冲吗
  • 递延所得税资产和递延所得税负债
  • 联营企业子公司是否构成关联方
  • 银行业应收票据分析
  • sql的常用函数
  • oracle的账户
  • docker设置固定ip
  • windows8计算机在哪儿
  • 3种方法教你有效祛湿
  • win8系统如何查看电脑内存
  • mac之间传送帐号怎么传送
  • 为什么没有win8系统
  • iphone手机文件怎么传到电脑
  • win7远程桌面连接怎么设置
  • iptables防火墙规则
  • mac nums
  • shutdown命令不能运行
  • perfcurve函数
  • perl do
  • 在动画制作中一般默认帧数选择为
  • Node.js中的construct构造函数
  • javascript入门经典
  • jquery父节点
  • linuxssh免密登录
  • jquery网页设计
  • 国家税务总局咨询热线电话
  • 企业所得税季度申报时间
  • 国家税务总局深圳税局
  • 交完契税,房产证没办,契税能退吗
  • 青岛市医保网上办事大厅
  • 农产品进项税额核定扣除办法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设