简单坦克大战

作业要求

坦克对战游戏 AI 设计
从商店下载游戏:“Kawaii” Tank 或 其他坦克模型,构建 AI 对战坦克。具体要求

  • 使用“感知-思考-行为”模型,建模 AI 坦克
  • 场景中要放置一些障碍阻挡对手视线
  • 坦克需要放置一个矩阵包围盒触发器,以保证 AI 坦克能使用射线探测对手方位
  • AI 坦克必须在有目标条件下使用导航,并能绕过障碍。(失去目标时策略自己思考)
  • 实现人机对战

项目地址

github
bilibili

具体实现

参考学姐博客,对一些混乱的地方进行了修改。
关于框架的复用不再赘述,主要包括:

  • 用工厂处理子弹和电脑坦克;
  • 导演,场景控制器;
  • IUserGUI接受用户输入;

NavMesh

官方文档
使用NavMesh来控制AI坦克的移动,使用SetDestination将Player设置为目标。

void FixedUpdate () {if(sceneController.getResult()==0) {target = sceneController.getPlayerPosition();if(HP.GetHP() <= 0.0f && recycleEvent != null) {recycleEvent(this.gameObject);sceneController.decreaseCountNPC();}else {NavMeshAgent agent = GetComponent<NavMeshAgent>();agent.SetDestination(target);}}else {NavMeshAgent agent = GetComponent<NavMeshAgent> ();agent.velocity = Vector3.zero;agent.ResetPath();}}

血条

学姐使用blood作为基类然后Player和NPC继承blood,bloodcontroller来控制血量,但是bloodcontroller完全没有使用,我将这部分代码重写,把上一次作业制作的预制体UGUI-H-Bar挂到玩家和电脑的坦克上,当子弹碰撞到时扣血即可。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;public class UGUI_H: MonoBehaviour {public Slider HPStrip;public Image fill;public float HP = 10f;private float tmpHP;void Awake() {HPStrip.value = HPStrip.maxValue = HP;tmpHP = HP;fill.color = Color.green;}void Update() {HP = Mathf.Lerp(HP, tmpHP, 0.05f);HPStrip.value = HP;if (HP<=5) {fill.color = Color.red;}}public void SetHP(int flag, float damage) {if(flag == 1 && HP <= 10) {tmpHP += damage;} else if(flag == 0 && HP > 0) {tmpHP -= damage;}}public float GetHP() {return HP;}
}

Unity3D项目十:简单坦克大战相关推荐

  1. Unity3D项目之《坦克大战》

    2016年2月4日11:00:27 Tank_Project_Log 1.新建工程,导入资源,新建Scenes文件夹,保存该场景进该文件夹 2.删除场景中的默认灯光 2.1 再把Prefab里的Lev ...

  2. Unity3d 机试题目 坦克大战总结

    面试的时候,先是正常的面试,然后是笔试,最后是机试.算好一切准备得还算完善,就是机试题目坦克大战,里面会有几个要点老是忘记.在这里首先要郑重感谢我不知道在哪里看到的博客以及他的作者,正好解决了我的疑惑 ...

  3. C#面向对象简单坦克大战(创意)

    GIthub地址 TankDemo 介绍 一个c#简单桌面应用(游戏). 基本上实现了坦克大战的相应功能. 参考最下方的截图 特点 支持用户登录注册,保存成绩,成绩排名.(然并-.) 关卡无限!因为一 ...

  4. python坦克大战游戏_python实现简单坦克大战

    基于对面向对象编程的思想完成简单的坦克大战游戏.主要目的锻炼面相对象编程思想 同样的在使用python进行游戏编写时需要安装pygame模块 安装方法: pycharm安装方式:File --> ...

  5. java 90坦克大战_java小项目之:坦克大战,90后的集体回忆杀!

    坦克大战小项目! 在小学初中的时候,我相信我们都曾经沉迷于一种玩具"红白机",这应该是80后90后的童年回忆.用绝对好好学习的誓言,求着父母买一台.自己学会插在电视机上,再和小伙伴 ...

  6. 简单 坦克大战 pygame -制作

    首先,第一步,游戏简单素材的准备. 炮弹,坦克移动.音乐-开火素材. 其次,思路整理. 我们需要几个类,分别是玩家类,敌人类,炮弹类及地图类,开始游戏界面以及结束界面,血条等等. 开始coding. ...

  7. Unity3d实现双人网络坦克大战

    效果预览 https://pan.baidu.com/s/1w3RccGs7FueDopwZTaPrpA#list/path=%2F 资源准备 所需要的资源和上周的AI自动寻路一样: 使用NavMes ...

  8. java简单坦克大战制作代码

    转载自:http://www.jb51.net/article/88317.htm 利用Java语言中的集合.Swing.线程等知识点编写一个坦克大战游戏. (1) 画出敌我坦克的原理: 在坦克类里面 ...

  9. cocos2d-x的初步学习二十之坦克大战七

    到目前为止,我们的坦克已经可以移动,并且已经做了碰撞检测.现在,我们要发射子弹了哦....首先,我们在我们的控制层添加一个虚拟按钮,来发射子弹,看代码: ControlLayer.h //按钮Snea ...

最新文章

  1. SpringBoot开发案例之整合Dubbo分布式服务
  2. idea打包springboot项目为war包并运行
  3. 浅谈文本词向量转换的机制embedding
  4. 抓取html的地址怎么写,html js 获取地址栏参数
  5. 制造工业中的机器学习应用:I概览
  6. MySQL数据库查询时间段的两种方法
  7. uglifyjs报错 webpack_基于vue2.X的webpack基本配置,教你手动撸一个webpack4的配置
  8. centos配置occi环境变量_拓展学习-golang的下载、安装和环境配置教程
  9. 本地提交到yarn_Yarn运行Flink作业 0449
  10. 数据工作本质:从业务中来,到业务中去
  11. 【work】输出日期为那一年的第几天
  12. 华为薪资等级结构表_华为内部考核体系
  13. 【网络仿真】ns-3基础(下)
  14. CCF CSP认证JAVA(一)
  15. java short 无符号_有符号/无符号的int,short和char
  16. VS2013之error C3130 内部编译器错误的解决
  17. C++如何获取虚函数表(vtbl)的内容及虚成员函数指针存放原理
  18. Given no hashes to check 131 links for project 'pip': discarding no candidates
  19. 华为鸿蒙替换,替换安卓!华为鸿蒙OS旗舰来了
  20. Matlab Simulink 常用快捷操作和功能(1)

热门文章

  1. HTML页面引入字体@font-face CSS指定字体从远程服务器下载
  2. 天生创想移动办公OA ,方寸之间一点即现
  3. 子桓说:《权力的游戏》第八季开播,琼恩·雪诺成七国真正的王!
  4. Holistic Image Manipulation Detection using Pixel Cooccurrence Matrices
  5. web前后端分离开发部署模式
  6. 十八个绝招把你从压力中营救出来
  7. 用windows运行命令打开
  8. 海思HI35xx平台软件开发快速入门之视频分辨率
  9. Qt编写安防视频监控系统66-子模块10网页浏览
  10. 解释瑞利分布的平方、莱斯分布的平方、高斯分布的平方 服从什么分布?