最近在项目中碰到一个问题,炮台再射击物体的时候,要生成一个炮台和目标的辅助线。类似于捕鱼类游戏,在锁定目标的情况下,生成的辅助线。

因为项目是3D的,所以在生成这个辅助线的时候,思考了一个下午,才得以实现。效果如下图:

移动的Cube为锁定的目标,不懂得Cube为射击点。小球 为辅助线。

通过计算射击点和目标的距离,来计算得到应该生成的小球个数,每次改变物体的位置,重新计算小球个数,少的小球,生成放到对应位置,多的小球销毁。该示例在X轴和Z轴正半轴组成的平面有效。

初次生成辅助线代码:

if (angle>90){angle = 180 - angle;num = Mathf.Floor(dis / 3);for (int i = 0; i < num; i++){float x = oriPoint.position.x - 3 * (i + 1) * Mathf.Cos(Mathf.Deg2Rad * angle);float z = oriPoint.position.z + 3 * (i + 1) * Mathf.Sin(angle * Mathf.Deg2Rad);GameObject obj = Instantiate(_prefab, new Vector3(x, 0, z), Quaternion.identity);obj.transform.SetParent(_parent);SubLineList.Add(obj);}}else{num = Mathf.Floor(dis / 3);for (int i = 0; i < num; i++){float x = 3 * (i + 1) * Mathf.Cos(Mathf.Deg2Rad * angle) + oriPoint.position.x;float z = 3 * (i + 1) * Mathf.Sin(angle * Mathf.Deg2Rad) + oriPoint.position.z;GameObject obj = Instantiate(_prefab, new Vector3(x, 0, z), Quaternion.identity);obj.transform.SetParent(_parent);SubLineList.Add(obj);}}

目标移动后的处理:

 if (num < Mathf.Floor(dis / 3)) {float NowAngle= Vector3.Angle(endPoint.position - oriPoint.position, Vector3.right);if (NowAngle>90){NowAngle = 180 - NowAngle;for (float i = num; i < Mathf.Floor(dis / 3); i++){float x = oriPoint.position.x - 3 * (i + 1) * Mathf.Cos(Mathf.Deg2Rad * NowAngle);float z = oriPoint.position.z + 3 * (i + 1) * Mathf.Sin(NowAngle * Mathf.Deg2Rad);GameObject obj = Instantiate(_prefab, new Vector3(x, 0, z), Quaternion.identity);obj.transform.SetParent(_parent);SubLineList.Add(obj);}}else{for (float i = num; i < Mathf.Floor(dis / 3); i++){float x = 3 * (i + 1) * Mathf.Cos(Mathf.Deg2Rad * NowAngle) + oriPoint.position.x;float z = 3 * (i + 1) * Mathf.Sin(NowAngle * Mathf.Deg2Rad) + oriPoint.position.z;GameObject obj = Instantiate(_prefab, new Vector3(x, 0, z), Quaternion.identity);obj.transform.SetParent(_parent);SubLineList.Add(obj);}}               num = Mathf.Floor(dis / 3);}if (num > Mathf.Floor(dis / 3)) {Debug.Log("Num:" + num + "  Other:" + Mathf.Floor(dis / 3));//销毁for (int i = 0; i < num-Mathf.Floor(dis/3); i++){Destroy(SubLineList[SubLineList.Count - 1]);SubLineList.RemoveAt(SubLineList.Count - 1);}num = Mathf.Floor(dis / 3);}}

具体Demo:https://download.csdn.net/download/hnzmdlhc/11170156

射击类游戏--射击辅助线的实现相关推荐

  1. fps射击HTML网页游戏,关于Unity中FPS第一人称射击类游戏制作(专题十)

    当前Unity最新版本5.6.3f1,我使用的是5.5.1f1 FPS第一人称射击类游戏实例 场景搭建 1.创建Unity项目工程和文件目录,保存场景 2.导入人物模型和子弹碎片的资源包charact ...

  2. 优秀课程案例:使用Scratch制作一个射击类游戏-360度旋转射击!

    点击上面微信号关注我关注我哟每天坚持推送文章,争取做到日更,喜欢的可以设置星标,并分享点赞我们的文章,非常感谢大家的支持,您的点击的在看就是我们的动力! 今天我们来分享一个射击类游戏的案例.同时大家持 ...

  3. 大型3d射击类游戏源码【突击风暴】,中文版本,可私服

    <突击风暴>(英文名称:Sudden Attack)是由韩国GAMEHI公司制作,盛大游戏运营的第一人称射击类网络游戏.<突击风暴>于2011年6月9日开服,2012年12月3 ...

  4. Java游戏开发——飞行射击类游戏

    使用到的素材文件夹: 素材说明:bg0.jpg是背景图片.bomb_enemy是敌机爆炸时按顺序播放的四帧图片,bullet_0.png是子弹图片,enemy_alive.png是敌机图片,playe ...

  5. ios射击类游戏简单代码射击

    ios射击类游戏简单代码射击 之后会持续的更新,学习的同学请关注,共同学习 main.c #import <Foundation/Foundation.h> #import "S ...

  6. Unity3D休闲射击类游戏《Survival Shooter》完整源码

    Unity3D休闲射击类游戏<Survival Shooter>完整源码分享给大家学习,这个对于那些想要制作u3d射击类游戏有很大帮助. 运行环境是:Unity5.3.1 下载地址: ht ...

  7. 视频教程-Cocos2d-x 3.x项目实战:星空大战(射击类游戏)-Cocos

    Cocos2d-x 3.x项目实战:星空大战(射击类游戏) 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN学院专家讲 ...

  8. Cocos2d-x 3.x项目实战:星空大战(射击类游戏)-李宁-专题视频课程

    Cocos2d-x 3.x项目实战:星空大战(射击类游戏)-17683人已学习 课程介绍         本课程是<从零开始掌握Cocos2d-x 3.0(基于3.0正式版) >课程配套的 ...

  9. 非常经典的飞行射击类游戏飞离神庙源码

    非常经典的飞行射击类游戏飞离神庙android源码,源码是从安卓教程网android.662p.com分享过来的,该游戏源码实现了一款很不错的飞行射击类游戏,飞离神庙游戏,游戏的操作玩法简单,跟我们平 ...

最新文章

  1. PointNet++论文个人理解
  2. Silverlight 开发入门1
  3. python笔记:jieba(中文分词)
  4. vs如何实现tcp连续发送多条消息_消息队列之 RabbitMQ
  5. best wavelet guide
  6. mysql有类似dbms_output.pu_line();_使用MySQL,SQL_MODE有哪些坑,你知道么?
  7. mysql 变量作表名查询_使用MySQL函数变量作为表名查询
  8. Oracle12c部署,允许远程访问
  9. JavaScript学习(四十七)—构造方法创建对象的不足
  10. 拜托!HTML渲染background-image的时候,url请一定加上‘ ‘(单引号)
  11. python自学月收入20k_每天自学2小时,18周便可月入20K,437集python自学资料拿走不谢...
  12. java byte转integer_Java 八大基本数据
  13. android 谷歌地图离线访问,Android版谷歌地图更新 新增离线浏览功能(图)
  14. Linux学习--CentOS可视化配置网络
  15. 黑苹果日记六(双系统引导)
  16. 操作系统漏洞检测与利用
  17. 统计bed文件下的reads数目和GC含量
  18. Photoshop for deepin.deb
  19. 企鹅java游戏下载安装_飞翔企鹅游戏下载
  20. 童年记忆中的优良环境

热门文章

  1. PL/SQL 工具远程连接Oracle数据库方法,plsql免安装oracle客户端直接配置oci实战演示
  2. 苹果电池测试软件原理,苹果手机电池检测软件有哪些?
  3. 微信小程序_文档_04_框架_视图层_WXS_WXSS
  4. 图像处理———图像的几何变换原理及实现
  5. 第一个iOS应用 —— Hello world!
  6. 高中关于人工智能方面的课题_人工智能课题及其认识意义.doc
  7. android好用的NFC软件,5个有用的NFC应用程序为Android,以利于NFC | MOS86
  8. Java并发工具辅助类代码实例
  9. Android 蓝牙监听与扫描
  10. 联合国儿童基金会宣布与微软达成新合作