游戏设计好,思考使用什么资源后,需要思考开发的具体功能。以下是个人总结的几个比较重要的思考点。

游戏镜头

由于设计是单机双人的游戏,镜头跟随效果不能是平时简单的跟随单物体移动,而是要在两个物体的重心。并且,两个物体在独立移动时,两者的距离会发生较大的变化,在同样的程序窗口上显示画面,两者距离变近时,相机应当变近,两者距离变远后,相机也应该跟着变远。

    public Transform p1; //玩家1的坐标public Transform p2; //玩家2的坐标private Vector3 offset; //用于计算坐标位置补偿值private Camera ca;float distance = 0;float size = 0;// Start is called before the first frame updatevoid Start(){offset = transform.position - (p1.position + p2.position) / 2; //计算相机初始位置与两个玩家中心点的偏移量ca = this.GetComponent<Camera>(); //初始化相机}// Update is called once per framevoid Update()  {if (p1 == null || p2 == null){return; //当有一方坦克销毁时,不再进行相机运算}transform.position = (p1.position + p2.position) / 2 + offset; //相机保持偏移,位于两个玩家正中心//下面代码用于计算相机缩放比,0.62f是经过我自己摆放相机位置得出的一个看起来比较舒服的比例distance = Vector3.Distance(p1.position, p2.position);size = distance * 0.62f;ca.orthographicSize = size;}

预制体的使用

双人对战,场景中会有两辆坦克,为了简化开发过程,可以首先把一个坦克模型建立好,为其增添好如刚体插件、脚本等内容,作为一个预制体。再通过预制体实例化出两个不同的实体坦克,分别对其进行编辑。

通过预制体创建的两个实例

键盘操作映射

双人对战,场景中就会有两辆坦克,就要对应两套不同的键盘操作。

为两个玩家设置两套不同的虚拟轴

子弹飞行

子弹射出坦克后,本身就成为一个实体,该实体拥有独立的碰撞检测,并且在碰撞后产生爆炸效果,如果碰撞的是坦克,则造成伤害。

public GameObject shellExpPrefab; //子弹预制体
public AudioClip shellExpAudio; //子弹爆炸音效public void OnTriggerEnter(Collider other) //当子弹遭遇碰撞时触发该代码
{AudioSource.PlayClipAtPoint(shellExpAudio, transform.position); //产生爆炸音效GameObject.Destroy(this.gameObject); //销毁子弹自身GameObject.Instantiate(shellExpPrefab, transform.position, transform.rotation); //播放爆炸动画if(other.tag == "Tank") //如果与坦克发生碰撞,将碰撞信息传递给坦克,告诉坦克触发受伤代码{other.SendMessage("injury");}
}

设计框架图

游戏结束UI界面

UI布局如下,并将其初始显示状态设置为不显示

using UnityEngine.SceneManagement; //使用最新的SceneManagement的函数需要用这个库//再玩一次按钮功能代码
public void ReStartGame()
{SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}//退出游戏按钮功能代码
public void ExitGame()
{Application.Quit();
}

【框架设计】3D坦克大战相关推荐

  1. c语言课程设计坦克大战,funcodec++课程设计_坦克大战

    <funcodec++课程设计_坦克大战>由会员分享,可在线阅读,更多相关<funcodec++课程设计_坦克大战(24页珍藏版)>请在人人文库网上搜索. 1.课程设计一 坦克 ...

  2. ava联网3D坦克大战(网络编程)2020

    .游戏效果 Java网络编程联机3D坦克大战 在这里插入图片描述 在这里插入图片描述 二.游戏涉及知识 服务器端运用了 IO.线程.网络.面向对象.异常 的内容, 客户端使用 unity3d引擎进行开 ...

  3. Unity学习回忆--3D坦克大战

    2023年LPL春季赛季后赛正在火热进行中,你们心中的总冠军是哪支队伍呢?作为热爱游戏的程序猿,一起来聊聊你那些有意义的游戏开发经历吧! 前言 还记得大一的时候第一次接触编程,为了手写一个hello, ...

  4. 3D坦克大战游戏源码

    3D坦克大战游戏源码,该游戏是基于xcode 4.3,ios sdk 5.1开发.在xcode4.3.3上完美无报错.兼容ios4.3-ios6.0 ,一款ios平台上难得的3D坦克大战游戏源码,有2 ...

  5. js版 3D坦克大战 V0.5

    欢迎体验js版的 3D坦克大战 V0.5 测试地址:http://121.199.29.66:88/. 目前只支持新版本的的chrome浏览器,有时同时进入的玩家较多,暂没有分房间,导致偶尔会较卡,请 ...

  6. unity学习3D坦克大战(六)

    Unity 3D坦克大战案列学习(五) 实现相机视野的跟随 using UnityEngine; using System.Collections; /// <summary> /// 控 ...

  7. unity学习3D坦克大战(一)

    Unity 3D坦克大战案列学习(一) 实现坦克移动和转向 using UnityEngine; using System.Collections; public class TankMovement ...

  8. unity学习3D坦克大战(四)

    Unity 3D坦克大战案列学习(四) 实现控制特效存在的时间 using UnityEngine; using System.Collections; /// <summary> /// ...

  9. unity学习3D坦克大战(五)

    Unity 3D坦克大战案列学习(五) 实现坦克的生命值和伤害机制 using UnityEngine; using System.Collections; using UnityEngine.UI; ...

  10. java 坦克大战_java课程设计之坦克大战

    本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示 ...

最新文章

  1. python 发布到linux_Linux(CentOS)下的Python3部署流程
  2. Power BI 可视化交互/视觉对象交互
  3. 1.10 instanceof关键字
  4. 关于longlong与位运算
  5. codeforces:812(div2):总结
  6. JBox2D手机游戏引擎介绍(附jbox2d官网网址)
  7. 安卓应用安全指南 5.2.2 权限和保护级别 规则书
  8. 排毒食物 红糖可补血美体排毒
  9. oracle 用户被锁定解决方法
  10. Atitit tomcat在linux服务器的启动与其他
  11. 【竞赛篇-国创(大创)结题】国创(大创)立项后的基本流程、需要用什么结题、如何快速结题
  12. uniapp canvas 合成头像
  13. 自考启示,关于不紧急重要到紧急重要的改变
  14. java计算机毕业设计企业员工档案管理源码+系统+数据库+lw文档+mybatis+运行部署
  15. 基于html评定奖学金页面代码,学校助学奖学金申请表页面模板
  16. 腾讯程序员月薪7万,小编感觉自己像码畜...
  17. Springboot_vue摄影作品图片展示交流平台
  18. 3D可视化色彩设计大揭秘
  19. 实战PyQt5: 143-QChart图表之堆积柱状图
  20. Dubbo入门教程,谈谈为什么要用Dubbo?

热门文章

  1. linux 定时任务 非root,linux下的计划任务——只执行一次的定时任务,
  2. [摘]广义企业级PDM系统下的PPM(工艺规划管理)
  3. 线性代数入门指南:线性方程组
  4. 路由器回执路由配置_路由器接路由器设置详细图文教程
  5. python求偏导_python中几种自动微分库解析
  6. 318. 最大单词长度乘积【我亦无他唯手熟尔】
  7. 2019中南大学计算机考研分数线,中南大学2019年硕士研究生招生复试基本分数线...
  8. 注意PHP的下一个千年虫:Y2K38
  9. CMMI3-CMMI5评估认证需要遵循七大原则
  10. 组合按键的软件设计(c语言)