摘要:在编写敌人AI的状态机时 经常需要判断角色对敌人来说是不是可见的 如果是可见的,则做出追击或者攻击动作 如果是不可见的,则保持idle或者巡逻状态 判断是否可见 包括两个步骤 1.地方角色的视见向量和规范化向量之间的夹角 以此确定两者间的可见性。 如果该夹角小于敌军角色的视域角 则玩家位于地方角色前
阅读全文
摘要:在一些格斗、射击以及动作类游戏中 相机震动效果是十分重要的 一个平凡的镜头 在关键时刻加入相机震动后 便可以展现出碰撞、危险、打斗以及激动人心的效果 相机震动的实现方式有很多 但都会涉及摄像机位置的变化 使用时 将此脚本挂到相机上 然后在需要的时候开启协程即可
阅读全文
摘要:GoF中定义: “提供一个能够建立整个类群组或有关联的对象,而不必指明它们的具体类。” 意思就是 根据不同的执行环境产生不同的抽象类子类 抽象工厂模式经常在面试中会涉及到 下面的例子为工厂1和工厂2 两个工厂都可以生成产品A和B 但是两个工厂工艺不同 所以工厂1只能生产产品A1和B1 工厂2只能生产
阅读全文
摘要:GoF中定义: “定义一个程序设计语言所需要的语句,并提供解释来解析(执行)该语言。” 传统上,执行程序代码通常通过两种方式 第一种:编译程序 第二种:解释器 常见的使用解释器的程序设计语言 包含流行与网页设计领域中的脚本语言 如JavaScript、PHP、Ruby等 这些程序代码经过一般文本编辑
阅读全文
摘要:GoF中定义: “使用原型对象来产生指定类的对象,所以产生对象时,是使用复制原型对象来完成。” Unity中 开发者可以组装游戏对象 它可以包括复杂的组件 组装好了之后,就可以将其存储为Prefab类型的Unity Asset资源 程序代码中使用的实例化方法(GameObject.Instance)
阅读全文
摘要:GoF中定义: “在不知道集合内部细节的情况下,提供一个按序方法存取一个对象集合体的每一个单元。” 迭代器模式由于经常使用到 已经被现代程序设计语言纳为标准语句或收录到标准函数库中 在C#中,经常使用泛型存储对象 当想按序存取这些泛型容器时,都会使用C#的foreach语句 foreach语句就是一
阅读全文
摘要:GoF中定义: “提供一个代理者位置给一个对象,好让代理者可以控制存取这个对象。” 代理模式多用来优化资源的加载 当资源已经加载过时,使用原来的资源 当资源没有加载过时,开始加载 此过程由代理模式控制 代理模式就像是一个过滤器 只有在一定条件下才可以执行一定的代码 这个条件可以在外部进行控制 文章整
阅读全文
摘要:GoF中定义: “将一个类的接口转换成为客户端期待的类接口。适配器模式让原本接口不兼容的类能一起合作。” 适配器模式与装饰模式有一定的相似之处 两者都是在着手解决C#不能多继承的问题 当出现一个不符合客户端接口的情况时 再不想破坏接口的前提下 就必须设计一个适配器来进行转换 将原本不符合的接口,转换
阅读全文
摘要:GoF中定义: “动态地附加额外的责任给一个对象。装饰模式提供了一个灵活的选择,让子类可以用来扩展功能。” 装饰模式一般用来增加新功能 它可以避免更改已经实现的程序代码 从而增加系统的稳定性,也变得更加灵活 装饰模式解决了C#不能多继承的问题 它通过从父类继承出一个不符合“类封装时的抽象定义”的子类
阅读全文
摘要:GoF中定义: “定义一个能够在一个对象结构中对于所有元素执行的操作。访问者让你可以定义一个新的操作,而不必更改到被操作元素的类接口。” 暂时没有完全搞明白 直接上代码 文章整理自书籍《设计模式与游戏完美开发》 菜升达 著
阅读全文