一、添加怪物(这个教程的鬼兵我可以用)
1.设置怪物出生点。
2.创建一个新脚本-CreateMonster,写好脚本之后放到3个传送门上。
3.然后添加完成后,给三个添加Audio Source组件
4.可以修改Audio Source的音量 //以上是第二课

5.选中Street,代表整个场景,点开右边Static的Navigation Static,获得计算范围也就是场景,打开工具栏Windows里的Navigation,点击bake,烘焙一下(只有烘焙之后寻路功能(Nav)才能使用),保存一下
6.打开之前的脚本,修改一下文本;
7.然后找到怪物,添加导航组件-Nav Mesh Agent 半径 高度修改一下,点击右上角Apply。
8.为了避免怪物和玩家碰撞,然后给CameraRig添加导航组件,Nav Mesh Agent。//以上是第三课

9.添加怪物动作,创建一个新文件夹Animation,右键创建Animation Controller.然后把?添加的动画添加进来。点击有点Entry设置默认状态,然后要明确动画跳转的一个关系。在Run上面右键和Damage是双向的,攻击也是有死亡的装填。给Run和Attack做内循环。
10.在左上角的Parameter创建几个bool的变量:Run、Attack、Death、Hit,然后设置Condition。(重新看一遍,把这个逻辑记录下来,通用设置逻辑),
创建新的文件夹:Animation,进去后,右键创建Animation Controller(命名:EnemyAnimation),然后找回动画,把需要的动作添加进来,然后开始简单编辑动画状态机,使动画在默认的时候执行Run,点击Entry右键Set StateMachine Default State,然后要开始明确跳转关系,Run是可以和其他所有动画进行跳转的,Death动画就不能和其他动画进行跳转关系,Run和Damage是可以双向的(点击右键-Make Transition),死亡就是当受到伤害会有一个死亡,攻击也是可以有死亡的状态的,Run和攻击双向关系,攻击和受伤也可以互联,然后给Run作一个内循环,攻击也作一个内循环,下面就要做一个逻辑上的跳转关系。
在Parameters上添加几个变量,创建Bool类型:Run、Attack、Death、Hit(受到攻击后)。
首先处理下Run到Damage,选择Run到Damage的箭头,在Condition下面点击加号,Run-Hit才进行跳转。以此类推进行控制,Run自身也是Run为true。(每条线都要添加逻辑变量),不要漏了自身。
然后找到怪物,把我们新作的动画控制器拖入到怪物的控制器里。然后动画的状态就设置好了。
11.找到怪物,然后把新作的EnemyAnimator拖动到怪物的Animator上的Controller

Run--GetHit Hit true
Damage-Run Run true
Run自身 也是Run
做好之后找到怪物,然后添加Animation Controller
//以上是第四课。

12.创建一个新的脚本:EnemyController。已经写好了。
13.再进一步修改代码,修好之后选中怪物,然后添加脚本
14.然后把上面那个脚本的目标点代码打开
15.创建一个新的脚本,GameManager,玩家收到攻击的脚本。拖到CameraRig,把传送门添加到脚本上。
16.添加怪物攻击逻辑代码,第七课。

【笔记】封神榜游戏设计VR的更多相关文章

  1. 【Stage3D学习笔记续】山寨Starling(十):高效游戏设计、纹理集和ATF

    我发布了经过批处理优化的v0.3版,点击下载:https://github.com/hammerc/hammerc-study-Stage3D/archive/v0.3.zip 先看看我们批处理优化后 ...

  2. C++分享笔记:5X5单词字谜游戏设计

    笔者在大学二年级刚学完C++程序设计后,做过一次课程设计,题目是:5X5单词字谜游戏设计.为了设计算法并编写程序,笔者在当时颇费了一番心力,最后还是成功地完成了.设计中不乏有精妙之处.该程序设计完全是 ...

  3. 信息安全系统设计基础课程实践:简单TUI游戏设计

    简单TUI游戏设计                目       录               一                      Curses库简介与基本开发方法             ...

  4. MMORPG大型游戏设计与开发(客户端架构 part8 of vegine)

    脚本模块是游戏设计中争论比较多的话题,那是因为作为脚本本身所带来的利弊.其实这都无关紧要,取舍是人必须学会的一项技能,如果你不会取舍那么就让趋势给你一个满意的答复.自从魔兽世界以及传奇(世界)问世以来 ...

  5. MMORPG大型游戏设计与开发(概述)updated

    1.定义 MMORPG,是英文Massive(或Massively)Multiplayer Online Role-PlayingGame的缩写,即大型多人在线角色扮演游戏. 2.技术与知识 在这系列 ...

  6. thinkphp学习笔记5—模块化设计

    原文:thinkphp学习笔记5-模块化设计 1.模块结构 完整的ThinkPHP用用围绕模块/控制器/操作设计,并支持多个入口文件盒多级控制.ThinkPHP默认PATHINFO模式,如下: htt ...

  7. Roguelike元素对游戏设计的影响

    Roguelike game自1980年以来,就占据着游戏市场中很大的份额,而现如今的很多游戏中,也加入了Roguelike元素来起到更好的效果.我们知道Roguelike game中有着一些看似任性 ...

  8. <发条游戏设计>粗翻——第一部分 理论(一)

    段落1 游戏 游戏设计定义 相对而言,游戏设计是一个新的学科,专业的作曲家.画家.作家.建筑师已经至少存在了500多年,然而游戏设计师只在最近50年才被特分出来单作一类.然而这个类别仅仅在最近20-2 ...

  9. <发条游戏设计>粗翻——序言、

    序言——————————————————————— 优雅 就像在英语里的很多单词一样,“优雅”有着一些不同意义的解释.一些习惯性的用法常常带有“美”的意思:例如“她穿着一条优雅的裙子”,代表着一种完全 ...

随机推荐

  1. Matplotlib 绘图秘籍·翻译完成

    原文:Matplotlib Plotting Cookbook 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN ...

  2. 使用Xamarin开发移动应用示例——数独游戏(七)添加新游戏

    项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 现在我们增加添加新游戏的功能,创建一个页面,编辑初始局面,并保存到数据库. ...

  3. Angular中$broadcast和$emit的使用方法

    要在控制器之间传递变量变化需要使用angular中的$broadcast和$emit方法来传递,同时使用$on来接收事件并作出响应. broadcast译为广播,即上级传递下级. 示例代码: < ...

  4. 【HTML】table表格拆分合并(colspan、rowspan)

    代码演示 横向合并: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http:// ...

  5. Javascript 生成全局唯一标识符 (GUID,UUID)

    全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) . GUID是一种由算法生成的二进制长度 ...

  6. list和tuple的用法区别

    1.list中是可变的,tuple不可变  所以tuple没有insert, pop,append方法 2.定义只有一个元素的tuple的时候,必须加逗号,否则不会被认为是tuple,而被识别为括号 ...

  7. Java线程--ReentrantLock使用

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11871593.html Java线程--ReentrantLock使用, 互斥锁: Reent ...

  8. 用代码创建并实例化在storyboard中声明的ViewController

    我们的项目最早是基于storyboard开发的,所以一开始所有的ViewController都通过storyboard创建,并通过segue连接跳转 但是今天其中一个controller的view,我 ...

  9. MySQL事务以及存储引擎

    MySQL事务以及存储引擎 目录 MySQL事务以及存储引擎 一.事务 1. 事务的概念 2. 事务的ACID特点 (1)原子性 (2)一致性 (3)隔离性 ①事务之间的相互影响 ②MySQL事务支持 ...

  10. iframe父子页面相互调用方法,相互获取元素

    父页面获取子页面 var childWin = document.getElementById('setIframe').contentWindow;//获取子页面窗口对象 childWin.send ...