位置: 编程技术 - 正文

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

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

  • 金税三期登录界面
  • 递延所得税负债计算公式
  • 财务软件怎么看利润
  • 税收分类编码怎么导出来
  • 出口货物丢失起诉谁
  • 鸡蛋普通发票能不能抵扣增值税呢
  • 库存商品领用会计分录
  • 支付一次性劳务报酬怎么做账
  • 在建工程累计摊销会计分录
  • 民营非营利企业会计分录大全
  • 普通发票有没有有效期
  • 住房补贴是不是编制才有
  • 外商投资企业啥意思
  • 酒店内部招待费怎么记账
  • 转增股如何计算资本公积金?
  • 产品置换广告费
  • 资本公积转增股本什么意思
  • 补偿金超过平均工资三倍
  • 用现金缴纳海关增值税能否抵扣?
  • 12月的工资啥时候发
  • 居民企业之间以非货币资产进行投资
  • 生产人员社保怎么做账
  • 财务费用年末有余额吗
  • win10如何查看显卡版本
  • 笔记本怎么开wifi
  • outlook的数据文件
  • 映泰主板bios设置硬盘启动
  • 什么是应交税费科目
  • PHP:session_decode()的用法_Session函数
  • PHP:Memcached::fetchAll()的用法_Memcached类
  • To install them, you can run: npm install --save core-js/modules/es.array.push.js
  • smart制作
  • php files
  • 履约保证金和质保金可以一起收取吗
  • 企业破产是不是要没收法人家里全部财产
  • php网站配置
  • php+mysql+ajax实现单表多字段多关键词查询的方法
  • 怎么确认个税填报成功
  • php正则表达式匹配链接
  • vue3+ts+vite
  • 利息发票如何做账务处理
  • 投稿p2
  • 单据已经生成凭证,不允许自动删除
  • 通行费电子发票抵扣填写到附表二的第几栏次
  • 零申报的公司有财务报表吗
  • 帝国cms文件夹介绍
  • 收到赔偿金怎么写收据?
  • 企业所得税汇算清缴会计分录
  • 一般纳税人销售旧货税率
  • 未开票收入如何计提增值税
  • 补缴的以前年度的税费怎么记账
  • 外币报表折算差额名词解释
  • 购进农产品抵扣的税率
  • 什么是限售股融券
  • 以前年度账务错误应该怎么处理的
  • 收缩后对数据库有影响吗
  • linux服务器安装虚拟机
  • 怎么在bios关闭软驱
  • 升级怎么玩
  • xp系统桌面图标怎么设置
  • win7怎么升级到win10系统软件还在吗
  • mac版本itunes
  • windows10使用ie浏览器
  • 手把手教你在家制作豆腐脑
  • unity 插件开发
  • assets怎么编辑
  • 微信怎么导入主题模块
  • android内存优化 简书
  • pycharm远程调试linux
  • linux使用ssh远程连接服务器
  • 使用筷子就餐会不会传染乙肝病毒
  • 触摸模式设置
  • javascript中的函数包括内置函数和自定义函数
  • 开发 工具
  • javascript绘制图形
  • 统计表主要业务内容
  • 国外高速公路收费站
  • 国税局和地税局分别征收什么税种
  • 国税总局17号公告
  • 厦门税务机关办事大厅
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设