在大体学习了Unity3D和c#语言后,这大概算是第一个全程做下来的小项目。
本篇文章不含代码,仅从每个部分的实现思路和体会提出一点分享。算是一个个人的总结。
当然也包括我在实现的过程中碰到的一些bug和处理。

制作前准备

创建新项目,导入素材包自不必说。这部分主要讲一下素材的处理和动画的制作。

先说说图片处理

Unity中的图像资源一般是由许多小图构成的图集,所以需要先将这些图片进行划分。划分可以使用PS等图片处理软件,但是作为一个刚入门的游戏程序,怎么可能有机会有人帮你处理图片呢?(枯了)
但是Unity提供了能够将图片划分的Sprite Editor组件。(注意,使用该组件时,图片的Sprite Mode必须是Multiple)
Sprite Editor组件提供的Slice功能还是挺强大的,有三个模式(Auto模式,bycellsize模式,bycellcount模式)。顾名思义,Auto模式能供自动识别图像并切割(但是貌似需要能够明显辨识出图片边界的图集?我目前正在做的一个宝可梦对战小项目在一些图片的自动切割模式下无法识别,但是用PS处理了一下(边界拉开)就能够成功切割了)。bysize模式则是你给定一个小图片的规模,按照这个规模切割,bycount是你给出需要切割成几行几列(适合排列整齐地图集)。

再说说动画的生成

这个项目中动画的生成当然是由一系列图片组成的帧动画生成的(当然我目前也不太懂有其他的,太菜了)。选中要生成动画的一系列图片(由一系列从上到下的顺序图片生成的动画),拖到Hierarchy面板中,选择动画要保存的路径,即可自动生成,Animator及其控件,建议用两个文件夹分别管理动画及其控件,方便后续调整。(这方面由于接触的少,我能说的也挺少的)

游戏主体

游戏主体我想分几个系统来讲讲。

游戏对象

这个游戏的游戏对象其实是非常简单的,玩家操控的坦克,老家,敌人,子弹,地图组件。对于每个游戏对象都要创建好预制体,并在碰撞效果触发等方面进行引用。(这里我目前有个小问题,如何能够批量的制作属性相同,但具体数值不同的大量同类型预制体,比如神奇宝贝对战中各种各样的精灵,各种各样的招式)下面讲讲各个游戏对象需要实现的功能及思路。

  1. 玩家坦克和攻击系统
    玩家坦克涉及到的活动主要有初始生成,发射子弹,被敌人摧毁等等。初始生成只需要在固定位置生成玩家预制体即可,被敌人摧毁也只需要有碰撞体和碰撞检测以及触发即可。这里主要讲讲战斗系统。这里给我的影响还挺深的(有个bug我在这里调了2个小时,很简单的一个bug)。子弹的生成我一开始以为是直接把发射子弹这个能力给予玩家,没想到是在玩家枪口的位置直接生成。这同时也造成一个问题,直接生成的子弹是不区分敌我的,所以要给子弹附加上敌我这个属性,使其能够分辨出玩家和敌人。本游戏的胜利或失败条件很简单,只需要玩家生命为0或者老家被摧毁即失败,所以战斗系统的触发条件用简单的switch语句即可完成。

  2. 地图系统
    地图系统也没我想象的那么高大上,在必要的位置先生成好墙壁,比如四周和老家周围,随后直接用random随机创建地图模块,本以为很突兀,但是貌似以前玩的就是这样的,所以效果展示出来发现也没那么奇怪。那么我试想一下那些地牢游戏随机生成的地图是否也可以这样实现?为了显示的规则些是否可以按照模块随机生成?亦或是从一个比较大的地图库里直接随机选择?亦或是可以方便的编写一个地图编辑器,在方便地调用。

  3. UI系统
    这个游戏的UI系统其实出乎意料的简单,与此同时对于长进UI知识的帮助也比较小,我最近做的宝可梦对战的UI系统直接把我烦死了,UI系统(UGUI)可以去siki学院的官网上找对应课程,免费的。

  4. 音效系统
    不想说这个了,几句代码的事,挺简单的。

对了对了,那个我搞了几个小时的bug其实就是,本该附加在玩家身上的爆炸特效,我在调试的时候留在了screen里面,导致每次开始运行游戏,直接触发爆炸效果,与此同时绑定的是玩家的游戏对象被销毁,简直了。。。

第一个项目整体做下来还是学到了很多东西,光学习理论确实不够,任重而道远啊。

想要具体实现代码的同学可以看这里

坦克大战项目实战

谢谢大家,有问题可以一起探讨哦。

Unity3D坦克大战项目总结相关推荐

  1. CocosCreator项目学习系列lt;三gt;BattleCity_90tank坦克大战项目的学习

    CocosCreator项目学习系列<三>坦克大战项目的学习<25/12/2017> 知识点总结: 1.TileMap的使用精髓; 2.Joystick虚拟摇杆的整合单脚本; ...

  2. 韩顺平老师坦克大战项目总结

    韩顺平老师讲的坦克大战项目,用代码进行了复现,有几个自己的总结 1 有个别功能没有实现,EnemyTank中敌人坦克向四周移动功能没有实现,只是实现了随机转向,但一直停在原地不动,没有找到bug所在. ...

  3. Java学习总结之坦克大战项目(完结版)

    接上篇 V1.0:在这个版本中呢,我们要让敌方坦克动起来,不仅要移动,还要打出炮弹,怎么实现呢?其实很简单,在RobotTank类中添加一个随机数产生器就ok了.用nextInt ( n ) 方法可以 ...

  4. java完成经典坦克大战项目源码

    图片是类与类之间的包位置关系,与代码的导包操作相关 ​[点击并拖拽以移动] 图片是类之间的关系,以及工具类的包位置package com.tank.app;import com.tank.game.G ...

  5. Unity3d 坦克大战开发日志1

    跟着B站上教程开发坦克大战已经有一段时间了,4天了.在此写下关于学习Unity3d引擎时遇到的问题. 1.在制作坦克大战双人对战时,如何进行分屏. 参考博文 如何分屏 总的来说就是,先建立两台Came ...

  6. 坦克大战java_清华毕业大佬用一个坦克大战项目讲完了23种设计模式

    先给大家讲述一下坦克大战是怎么进行运行的. 坦克大战第一节: new 出一个窗口: 设定标题栏内容: TankFrame从Frame继承+显示: 认识paint方法,重写: 坦克大战第二节 学习gra ...

  7. 坦克大战项目c语言代码,c语言 坦克大战 游戏源码下载

    [实例简介]坦克大战  C语言  源代码 [实例截图] [核心代码] void GamePlay()/*玩游戏的过程*/ { int i,j,lose=0;/*lose是1的时候表示失败*/ int ...

  8. Unity3d坦克大战开发日志3(Day5,Day6)

    这两天被 "如何根据recorder里保存的坦克信息,去GameScene里实例化坦克" 这个问题卡了好久,做出来以后发现以外的简单. 问题1 NullReferenceExcep ...

  9. 坦克大战项目需求文档

    01_坦克大战案例演示  * 略     1. 创建游戏窗体     2. 绘制地图(阻碍物,坦克)     3. 坦克可以移动,也可以发射子弹     4. 碰撞(坦克和阻碍物的碰撞,子弹和阻碍物的 ...

  10. unity3D 坦克大战

    1.新建工程,导入资源,新建Scenes文件夹,保存该场景进该文件夹 2.删除场景中的默认灯光 2.1 再把Prefab里的LevelArt预设场景拖到Hierarchy中 2.2选择window-& ...

最新文章

  1. 针对远程主机认证生成并使用 SSH 密钥
  2. java 多个 panel_在Java中,每次我向JPanel添加多个东西时,第二...
  3. python语言format用法_python基础_格式化输出(%用法和format用法)
  4. 欠条和借条傻傻分不清?小心借出的钱要不回!
  5. linux系统多网口聚合配置,Linux网卡聚合linux多网卡绑定聚合之bond模式的原理是什么...
  6. 前端学习(2837):image图片标签
  7. aws dynamodb_如何使用AWS Lambda将DynamoDB集成到您的API中
  8. python算法应用(一)——提供推荐
  9. (转)Hibernate的配置详解
  10. Python中计算文件的MD5值
  11. 函数及脚本的综合应用
  12. mysql 错误连接锁死_MySQL 8.0.19支持输入3次错误密码锁定账户功能(例子)
  13. Android开发--Button的应用
  14. IOS Apple Pay
  15. vue事件.navtive 的使用
  16. 【图论】昂贵的聘礼(最短路变形)
  17. 基于WordNet的英文同义词、近义词相似度评估及代码实现
  18. LDPC — 信道编码
  19. 2017中兴捧月算法精英挑战赛-迪杰斯特拉
  20. python黑白棋 pygame_python使用minimax算法实现五子棋

热门文章

  1. 汉语拼音音节的歧义指数
  2. 转行开始的前端填坑之路
  3. 技术类岗位面试中经典问题总结分享
  4. 51.la申请免费统计代码
  5. STM32F429-Discovery 编译 uclinux
  6. 从 MVC 到使用 ASP.NET Core 6.0 的Minimal API
  7. linux 内核网络中 RPS/RFS 原理Ⅰ
  8. 2022 年云计算发展趋势
  9. animation 详细讲解
  10. KUKA力控软件使用问题介绍