位置: 编程技术 - 正文

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

发布时间:2024-02-27
在飞行射击游戏中,恐怕没有一个游戏不用到跟踪算法的。比如在玩街机的时候,是不是经常挂于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游戏开发标准教程)

  • 转让股份缴纳什么税
  • 税盘连接服务器失败130008
  • 应付职工薪酬费用的对应科目
  • 公司没有账目违法吗
  • 分公司法人必须是总公司法人吗
  • 参加会议培训的好处
  • 备用金没有发票抵消违法吗
  • 发票上的销货方是什么意思
  • 工程项目成本控制的方法
  • 房地产企业实收资本要求
  • 土地转让缴纳增值税政策
  • 存货项目包括哪些具体内容
  • 供货方提供安装材料
  • 幼儿园收取生活费通知
  • 外聘人员差旅费应放什么会计科目
  • 境外增值税代扣代缴
  • 跨年发票冲红重新开具购买方做账不
  • 国外公司怎么付款给国内
  • 失控进项发票转出 补税做账
  • 开给个人的通讯费发票能下账吗
  • 进项和销项不符的税务处理
  • 建造合同中甲供材选择一般计税还是简易计税更省税?
  • 以旧翻新视频
  • 税务领取发票后怎么操作
  • 农民专业合作经济组织可以贷款吗
  • 增值税发票二联折叠票样式
  • 动车票的税进行抵扣该填写在哪里
  • 当月认证的发票当月一定要入账吗
  • 联想g40开机屏幕一直闪
  • 公司投资理财产品
  • 企业所得税申报错误怎么更改
  • 广告公司广告费收入交增值税吗
  • 转账和电汇哪个便宜
  • 对于接受捐赠的资产价值,应计入当期损益
  • 一般纳税人购进税控收款机抵扣
  • 房地产土地使用税核减条件
  • 土地出资是否涉及企业所得税
  • vue input value
  • 差旅费报销应注意什么
  • mail命令详解
  • 红字冲销的增值税发票怎么处理
  • 专项应付款借方余额表示
  • 保障金是低保吗
  • sql执行顺序优先级
  • mysql null+1
  • 银行会计核算方法的特点
  • 出售固定资产的损失计入什么科目
  • 企业进行存货清查时,对于盘亏的存货
  • 纳税人的进项税额怎么算
  • 土地增值税要计入税金及附加吗
  • 垃圾清运费属于什么服务
  • 从厂家直接拿货需要什么条件
  • 红冲发票重开一定要一样的金额吗?
  • 应付职工薪酬的工资是实发工资还是应发工资
  • 员工在工伤
  • 关联的公司
  • 工程类的增值税
  • 如何暂估费用会计分录
  • 货物赔偿款怎么做账
  • 公司出售自建厂房
  • 缴纳文化事业建设费的单位应按照提供广告服务
  • 外购的货物发生下列用途时,不能抵扣进项税额的是
  • 支票小写金额可以涂改吗
  • 增加个税信息怎么增加
  • 改制后的企业
  • mysql random函数
  • sqlserver数据库中的null值空值表示的是空格或零值
  • mysql null+1
  • for windows vista only
  • linux中man的用法
  • win10系统资源
  • win8如何更改用户名字?
  • win10系统误删文件怎么恢复
  • nodejs爬虫 与python爬虫
  • js特殊字符有哪些
  • js的prepend
  • python代码检测在线
  • 经营所得个人所得税税率表
  • 江苏省国家税务局电子税务局官网
  • 交通运输业包含哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号