GAD暑期训练营MiniGame:3D塔防(下)

AI子系统

状态基类

BaseState :定义了状态基类,其他所有状态都继承了它。它提供了三个虚函数enter(),execute()和exit(),提供状态进入,执行和退出时的逻辑动作。

StateMachine: 定义了一个状态机类,维护当前状态的更新和状态转换。它有指向GameEnity的指针,还维护CurrentState, PreState等成员,还有Update(),ChangeState等方法。

GAD暑期训练营MiniGame:3D塔防(上)

MiniGame概述

根据规则,每个GAD训练营的学院都需要在最后提交一个自己构思并设计的MiniGame作为大作业,保证可玩的前提下,尽量创新。根据手头的模型资源,我想到了做一个3D的塔防游戏,玩法足够简单,但在设计过程中又可以覆盖最基本的游戏框架设计、AI子系统和其他学到的知识。
这篇文章我想更偏向于逻辑系统实现的一些思路,所以仅仅简要介绍下游戏的大致玩法和角色,有关UI和交互我都会整理到说明文档中。

GAD暑期训练营第一周:设计模式

GAD暑期训练营

6月中旬一个偶然的机会,报名参加了由腾讯互娱GAD举办的暑期训练营的程序班,通过了网上初试之后,从七月初到八月初,在武汉度过了充实又难忘的一个月。
训练营在武汉大学城市设计学院的专业教学楼,来自腾讯各个游戏工作室的技术大牛每周末会给我们集中就某个指定的主题进行授课,然后布置作业,同时,我们还需要在课余时间自主完成一个MimiGame,最终综合评分排名,选拔10名同学于8月初到深圳腾讯总部和其他方向的同学组队,进行72小时极限游戏创作大赛。

Space-Shooter笔记——Shoting Shot

问题

飞船的子弹造好后,还要保证随着飞船的移动而发射出去。下面对Player下的脚本进行修改,使其实现动态发射子弹的功能。

Update()

首先,把之前隐藏的Player取消勾选,编辑Player Controller脚本。
这次我需要创建Update()函数,在Unity的官方文档中,MonoBehaviour.Update() 的介绍是:

Update is called every frame, if the MonoBehaviour is enabled.
Update is the most commonly used function to implement any kind of game behaviour.
也就是每一帧更新时,执行函数内的代码。

Unite'16 SHANGHAI

4月初,有幸参加了今年于上海举办的Unity开发者大会——Unity’16 SHANGHAI.
9号下午启程从南京做高铁到上海,在住处简单的收拾了一下之后就去本科室友老宋那儿吃饭聊天,几杯酒下肚,谈及他工作上遇到的问题以及魔都生活的艰辛,深感不易。

近期问题——在天河二号上运行程序

问题

在天河二号上,供用户使用的计算机资源有两部分:

  • 登陆节点
  • 计算节点
    顾名思义,登陆节点是用户通过远程登陆所在的节点,用户可以在登陆节点上进行脚本的编写,文件的删改等较为简单的操作,
    但是登陆节点是供所有用户使用,因此,如果在登陆节点运行程序的话将会极大影响其他用户的操作,而且程序效率也很低。

近期问题——在天河二号上配置环境

问题

因为项目的需要,我需要在天河二号上布置Opencv-Pyhton的环境,天河二号上已经事先配置好了Python 和OpenCV 的环境,
但是在运行我的Python代码时却报错如下:

1
2
3
4
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named cv2

发现了无法导入cv2,于是开始寻找解决办法。

My Personnal_Page2.0

Why 2.0?

之所以说这是我的第二版个人网站,是因为之前存放在本地的Hexo文件夹在安装Ubuntu系统的时候惨遭格式化。想寻求一种能够自动备份本地Hexo文件夹的方法,这样以后换系统或者换电脑就可以不用担心博客内容全部丢失了。

于是就开始寻找各种解决方案,有把本地文件夹同步到Github上的,也有同步到Google Drive上的。开始我选择的第一种方案,但是在实际的操作过程中却遇到了麻烦,具体来说就是在同步的过程中,部分文件的文件名过长,
导致无法上传到到github上,于是就这样反反复复的尝试了几遍后还是无法解决。索性就采取了较为偷懒的第二种方法——同步网盘。