今天解决了一个BUG,写篇博客记录一下。
预先说明,其实这个BUG凭我自己是解决不了的,因为说实话,直到它解决了我也没有搞懂为什么会触发这个BUG。在这里请允许我先挂一下帮助我解决了问题的那个大佬的作品:
Unity3D: Gun Turret Rotation (Download in Description)
真的是个宝藏项目,我能学到不少。
从他的视频下方的GitHub链接下载下来的项目帮我找到了问题,就是他

BUG长成这样:二战美军谢尔曼的真实战斗力(bushi)
是的,因为太迷了所以发视频纪念了。用语言描述一下就是,这个旋转炮塔按照图上的代码写,只要坦克本体转了,炮塔就会像直升飞机一样转个不停。至于为什么会产生这个BUG呢?
之前本来是没有的,参考16号的随手记,但是原来那个也是有问题的,问题体现在炮塔由于绕世界坐标旋转,而我的代码又要防止炮塔沿x,z轴旋转,所以导致坦克炮塔永远保持世界坐标轴的水平,即使坦克在爬坡或者翻车了。我截图算了,大概就是这样一个情况:

其实我也很好想到问题的解决方式,就是世界坐标的改成局部坐标的就行了吧,结果出现了文章开头提到的BUG。
当时真的搞得我很难受,因为真找不出问题出在哪里,做了一晚上无用功。事实证明,遇到问题查不到的时候还是得找个正儿八经做出来了的项目来看一看。
当然了本来之前以为炮塔旋转已经做完了的。我都开始着手做开火了。效果也勉勉强强,用了rigidbody的炮弹,坦克多做了几个碰撞盒子,试着在Scene面板中用DrawLine把弹道标记了出来。也出了一些小BUG,比如我这个憨憨在FixedUpdate里面设置炮弹的速度,导致炮弹的速度一直不变,然后我在那里疑惑炮弹的轨迹怎么不下坠啊,为什么碰撞以后转圈圈啊。。。
当然,炮弹没有用对象池,对象池我已经忘了咋个做了,现学可能来不及,以后再补充算了。目前不用对象池估计对项目性能影响不大,炮弹毕竟也不多。应该不会经常出现GC;
除此之外,我做了一个在每次开火时坦克受到反作用力的效果,可能不太真实,但是也比没有好。
那么既然问题解决了,今天晚上剩下的时间我再优化一下炮管的旋转。

然后接下来的任务清单就是:

  • 瞄准系统。实在不行做个UI凑合一下
  • 炮弹的碰撞。简单点就碰着算随机数,复杂点就试试看能不能算角度,实在不行就做成碰到就炸的
  • 坦克爆炸效果
  • 敌人的AI,至少要会攻击玩家。能做出移动就再好不过了。
  • 弹道可视化(这个最后再说,大不了做成炮弹自发光材质)
  • 高速物体碰撞检测(用射线在每一帧检测一次算了)
  • 伤害算法,带随机数的(可能确实要参考一下FOW)
  • 碰撞角度(炮弹发射位置到敌人位置的向量来判断?貌似不行)
  • 敌人要怎么瞄准(还不知道,没做过)
  • 我们要怎么瞄准(大不了加个UI就完事了,打不着怪我咯)
  • 第一人称和第三人称的切换(多做几个摄像机来回切换?)
  • 怎么知道命中的是前装甲还是侧装甲还是后装甲(通过炮弹的朝向与对方的朝向来判断?不过貌似不是太行,干脆就别分前后装甲了)

坦克项目的炮塔旋转BUG记录——Unity随手记(2020.11.19)相关推荐

  1. 坦克项目的摄像机改进及殉爆效果开发记录——Unity随手记(2020.12.1)

    好久不见. 今天来汇报一下进度,等这次任务完成所有的这些随手记都会被一个完整的博客代替. 由于时间有点久了,我就不按顺序来了. 首先要说的是我放弃了Cinemachine插件,到油管上学了一下Seba ...

  2. 【BUG记录】记一次游戏越来越卡的BUG

    [BUG记录]记一次游戏越来越卡的BUG U3D的MOBA项目,测试过程中,10分钟以后,游戏帧率开始缓慢下降,约3-5分钟后,由60帧下降到小于10帧,编辑器模式. 打开profiler,看到CPU ...

  3. 23种设计模式详解_太厉害了,清华大牛一个坦克项目就把23种设计模式给抽丝剥茧了...

    坦克大战项目 坦克大战项目通过一个联机对战游戏的手把手,一行一行的开发过程,让你精准的理解和运用JavaSE,DesignPatterns , TCP/IP, 多线程, NIO等基础知识.真正理解项目 ...

  4. 分析了 3000 份 Bug 记录,可以发现什么?

    为了进一步了解软件开发团队处理bug的流程,我们随机抽取了过去的两个月中上传到我们数据库中的3000个bug记录...... 作者 | Dan Makarov 译者 | 弯月,责编 | 郭芮 出品 | ...

  5. 【BUG记录】解决Failure to find (pom/jar) in http://xxx.com was cached in the local repository

    [BUG记录]解决Failure to find (pom/jar) in http://xxx.com was cached in the local repository ☠注意:此解决方法仅针对 ...

  6. Java实现CRM项目过程中的细节记录(一)

    CRM项目实现过程中的细节记录(一) 文章目录 CRM项目实现过程中的细节记录(一) 一.数据库相关细节 1. 表名 2. 表字段说明 3. 不使用主外键约束 4. 不使用主键自动增长 UUID 5. ...

  7. Android Studio 项目设计开发bug记录以及未来新技术

    文章目录 项目设计开发bug记录: (1)打包时出错 (2)关闭项目自启动 (3)显示工具栏 (4)怎么导入jar包 (5)导入工程出现异常 (6)run项目出现异常: (7)修改包名 (8)导入项目 ...

  8. DayDayUp:昨天用微信发朋友圈—发现微信出现一点点Bug记录

    DayDayUp:昨天用微信发朋友圈-发现微信出现一点点Bug记录-屏蔽了该屏蔽的人,但没被屏蔽的人也看不到 目录 遇到微信小bug的前因后果 关于微信 遇到微信小bug的前因后果 博主于昨天23:5 ...

  9. pygame 学习笔记(7)添加一个精灵:坦克的移动和旋转

    本文内容 精灵 类的使用 Rect 类的使用 实现一个坦克的移动和旋转 效果演示 添加一个静态坦克 我们已经知道如何创建一个游戏窗口,并设置背景图片,还让游戏程序可以对键盘和鼠标进行响应,接着我们需要 ...

最新文章

  1. lstm 文本纠错_中文文本纠错算法错别字纠正的二三事
  2. (一)SOA学习-相关缩写
  3. while循环里面scanf_5.1 for循环
  4. Jenkins Pipline语法
  5. sass编写高质量的css---(基础语法结构)
  6. Hibernate 添加数据 一 (一对多)
  7. overridePendingTransition介绍
  8. Citrix XenServer 6.5 发布
  9. linux手机用什么购物支付,商城系统的微信支付应该如何配置?
  10. 它在计算机房的旁边英文,计算机房设备搬迁协议 (中英文)
  11. 2021年上半年软件设计师上午真题及答案解析
  12. 富龙飞联手文创产业研究所,推出国内首个AR+文创建设应用系统
  13. 装完nvme固态经常蓝屏_方案解决:NVMe SSD安装Win7蓝屏0x0000007B快速解决方案
  14. CentOS7.6安装docker
  15. 如何修改本地网站的域名
  16. OPPO小布4.0:软件定义硬件,智能定义“助手”
  17. HDWiki/插件开发指南
  18. PC端BOSS直聘如何在不点开消息的情况下查看最新消息以及其所招的职位信息
  19. gsoc 任务_gsoc 2020与cern hsf暗物质和深度学习
  20. 锂离子电池健康状态估计简介(一):基于Python的数据处理计算SOH,RUL,CCCT,CVCT

热门文章

  1. 如何在 iPad 上运行 VSCode
  2. Android获取屏幕宽高,状态栏宽高,actionbar宽高,layout宽高,导航栏高度的方法汇总
  3. perplexity 衡量指标_怎样生成语言才能更自然,斯坦福提出超越Perplexity的评估新方法...
  4. Matlab批量处理ECMWF数值天气预报产品grib格式文档
  5. 【转】不归零码(NRZ),不归零码(NRZ)是什么意思
  6. 计算机网络现场验收测试内容,综合布线系统验收标准及内容有哪些?
  7. 文献阅读(189)Interposer
  8. “STO 链改出海抱团取暖”,TokenSky香港站12月17日召开
  9. html 在线聊天工具,给你的外贸网站增加一个在线聊天工具吧
  10. 《水果忍者》背后的故事