位置: 编程技术 - 正文

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

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

  • 工资是当月计提下月发放吗
  • 成品油认证后要开票怎么做
  • 现金流量怎么影响股票价值
  • 数量金额式明细账模板
  • 公司承租厂房装修协议
  • 增值税普通发票可以抵扣吗
  • 营改增以后小规模纳税人如何纳税
  • 税友每年还要交年费?
  • 普票的销项可以抵扣吗?
  • 公积金是否计入个人所得税
  • 复合增长率什么函数
  • guest的作用
  • 会计科目对应的会计要素
  • 投资公司的股东
  • 如何设置系统自带的输入法
  • 物业公司预收款增值税纳税义务发生时间
  • 华为鸿蒙系统看PDF文件会不多次存
  • 企业从政府取得的经济资源均应当
  • yoosee怎么安装
  • player windows
  • 自产产品用于业务招待 如何申报企业所得税
  • 简易计税办法和一般计税办法
  • regsvr32 shmedia.dll
  • 培训费收入交什么税
  • 企业要普通发票有什么用
  • 回迁安置房是否有产权
  • 注册公司时认缴和实缴时间怎么填
  • 收到固定资产的记账凭证
  • 债务重组收入要交税吗
  • php点击跳转
  • 员工报销发票怎么做账
  • js读取本地excel
  • 广告费与业务宣传费范围
  • AIGC之GPT-4:GPT-4的简介(核心原理/意义/亮点/技术点/缺点/使用建议)、使用方法、案例应用(计算能力/代码能力/看图能力等)之详细攻略
  • df 命令执行显示不出来
  • 集团公司对子公司的内部审计
  • df -th命令
  • Python列表元素的删除
  • JavaWeb之Servlet
  • 企业的借款费用怎么入账
  • 企业增值税的税收优惠有哪些
  • 为什么盈余公积减少,未分配利润增加
  • 织梦怎么添加相关
  • 小规模都是季度报税吗
  • 股权转让所得如何申报个税
  • 什么情况纳税
  • 代开发票要带什么资料?
  • 出差在火车上算上班吗
  • 收到现金货款怎么处理
  • 分公司向总公司申请拨款的请示
  • 无形资产未取得发票
  • 企业代扣税费会计分录
  • 包装物是指什么
  • 自产自销免税农产品需要缴纳印花税吗
  • 注册资本实缴后钱怎么出来
  • 以前年度费用科目入错 不影响以前年度利润的账务处理
  • 人工成本包括哪些项目
  • 固定资产公司
  • mysql orch
  • mysql停不掉
  • windows软件授权服务报告无法激活计算机
  • bios setup在哪里
  • 在Ubuntu Trusty 14.04 (LTS) (64-bit)安装Docker的步骤
  • 安装双系统后无法进入原来的系统
  • linux,windows
  • ghost操作指南
  • 如何自定义win键
  • windows1020h2更新失败
  • js给表格添加一行
  • 实用批处理
  • nodejs基础知识
  • python 内置函数名作为变量名
  • 备份多个数据库
  • python数字运算规则
  • bud3d跑酷
  • jquery如何调用
  • Android音乐播放器评论功能怎么实现
  • jquery实现全选和取消全选
  • python如何用pi
  • 纳税申报期限2023
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设