Articles of 状态

从状态分离(反应)观点的正确方法是什么?

我想知道正确的实现来声明游戏逻辑和查看逻辑: 我看到了3种实现方式: 1.调度(例如,编写预处理以将更改存储到属性中)属性更改为分派给数据实体的侦听器的数据实体。 主要监听者是视图,其中视图包含声明的渲染逻辑(即,基于属性更改来改变实体animation,更改实体渲染对象位置)。 状态模型(x,y,z,state) – >视图(监听x,y,z,状态的变化) – >场景graphics对象(x,y,z,animation,由视图设置) 这个问题是很明显,游戏引擎正在View中执行很多char[] switch语句(例如属性名称)。 2.声明视图是整个模型的更新。 例如,不是像1)中规定的那样保存更改,而是通过检查整个模型来更新每个滴答对象上的渲染对象,而不是1)所提供的变化。 1和2之间的权衡是在状态刻度上额外执行存储属性改变的必要性。 3.在状态逻辑中解释animation逻辑。 例如,实例化的成员渲染对象是不执行渲染时的虚拟对象。 问题: 正如在标题中所规定的那样,对游戏状态作出反应的正确实现是什么,在哪里应该声明对游戏状态有反应的显示/渲染/animation(视图)逻辑? 在大多数游戏引擎中实现大型项目的实现是什么? (如果可能的话,请指定具体引擎:SupremeCommander /克隆,SC2,虚幻,身份证,冻伤,铁砧) 工作室使用所述引擎来实现哪些实现来构建项目? 很明显,在上面的引擎中可以不分离模型。 例如,如果你实现一个实体,你可能希望它在多人,合作和单人游戏中可行。 关于其他引擎的问题处理这样一个事实,即可能已经评估过,在视图中使用状态并不是一个足够优化的实现,而不是执行直接调用来渲染对象。 所以,在tick上我们更新游戏数据模拟。 例如: 单位武器的状态更新为射击。 但是,在仿真的所有情况下,更新武器的射击视图(例如,通过设置武器的animation和animation手)是不必要的。

基于animation的碰撞盒

背景 我目前正在制作一款自上而下的2D游戏,与SNES的Zelda类似。 某些游戏实体(如玩家或典型的敌人)将由多个碰撞盒组成。 例如: 确定与地图(即墙壁)碰撞的主要碰撞盒。 它也决定了实体可能受到伤害的地方。 如果与主碰撞箱重叠,则该碰撞箱会使该碰撞箱的所有者受损。 只有当实体正在攻击时,攻击冲突框才应该是有效的。 一个解决scheme 想到的第一个潜在的解决scheme是用于格斗游戏,每个animation帧都有自己的一套碰撞盒。 这显然可以起作用,但感觉它可能过于devise了我所需要的东西。 实际问题 除了上面的解决scheme之外,是否有一个标准或常见的攻击方法? 或者是把碰撞盒绑在animation上做标准的做事方式? 我想强调一下“标准”这个词。 知道“塞尔达传说”,“魔法秘密”和“恶魔城”这样的游戏如何处理它,真是太棒了。

处理移动input的最佳方法?

我目前正在用c ++开发一个RPG运动系统,并试图使用状态模式/状态机,但是AFAIK我必须在每个状态下检查每个运动键(对吧?) 有没有更好的devise呢?因为国家没有限制,玩家可以随时切换到任何移动状态。 任何人都可以帮忙

在unity2d中,不要在平台的末尾改变为“飞行”状态

在unity2d平台的末尾我怎么能不改变到“飞行”状态呢? 他/她站在平台上时,我想要的是这个角色: 以下是接近平台末端时他/她正在做的事情: 我希望国家能够站在平台的边缘,而不是“飞”。 这是一个RayCast负责检查字符下是否有平台: 这是一个平台设置: 解决问题的唯一办法似乎是制作两个光线投射 – 一个在玩家的左下角,另一个在右下角。 但是接下来有一个问题:我怎样才能得到玩家对撞机的宽度? 我希望有一个更简单的解决scheme

我应该如何管理多个游戏物理状态?

一段时间以来,我一直在研究一个高逼真度的真实物理空间模拟器。 在模拟器中,有几种不同的飞行模式,每个飞行模式都有一个首选的整合参考框架。 我目前使用最多的两个是在旋转的地球框架中的大气飞行,以及在惯性地球框架中的空间飞行。 它们之间的过渡是无缝的,所以在切换帧时,状态就变成了新的状态。 现在,我有一个国家对象存储车辆的位置,方向和衍生物。 虽然这些方程的forms在每个帧中是不同的,但是从这个状态同时有11个微分运动方程被集成。 在大气框架中,为了方便,将速度存储在车辆坐标系中,而在惯性框架中,速度仅仅是原始的惯性。 在这些框架中的一个集成后,我执行一个转换来填充另一个框架中的等价状态。 所以为了清除这一点,我有一个单一的状态对象,每个框架都有单独的存储(简化): struct State { vec3 pos; //position in rotating frame coords vec3 pos_i; //position in inertial frame coords vec3 vel; //velocity relative to rotating frame, in body coords vec3 vel_i; //velocity relative to inertial frame, in inertial coords quat orient; //orientation of vehicle wrt Local frame quat […]

更改玩家的状态并在游戏中进行控制

我正在使用Unity 3D 假设玩家是一个冰块。 你像普通玩家一样控制它。 在按下button时,冰(用animation)变成水。 你控制它完全不同于冰块。 另一个很好的例子是:玩家是人类,拥有正常的FPS控制。 按一个button人类变成鸟类,现在有完全不同的控制。 现在,我的问题是,什么会更容易,更好: 使animation过渡的一个对象,并保持在这种dynamic状态。 直到再次按下button 使两个对象:冰和水。 冰有一个变成水的animation。 所以用水对象取代冰(与animation) 如果有人也知道这个:如何切换2种不同types的播放器控件。

状态机类与函数指针

你们推荐使用什么? 具有函数指针或类的状态机? 或者,在这种情况下,一个会比另一个好? 在工作中,我们只使用带有函数指针的状态机,而我从来没有尝试过使用类。

如何创建一个基于状态的交通信号?

我想创建一个Unity3D游戏的交通灯。 我将在搅拌机中进行建模。 统一场景中控制这个灯光的最好方法是什么? 我能想到的一种方式是,当红色信号到达时,将红色光的质地从暗红色改变为鲜红色。 但是我不确定这是可能的还是一个好的策略。

代码与configuration在Unity

我在这一点上知道一个或两个关于统一,但我仍然有很多主观,最佳实践的问题,如:如何决定通过开始/唤醒初始化获得什么值,以及哪些值明确序列化到现场? 在我目前的项目中,游戏对象和行为在一个复杂的图中互相引用。 最初,我在Start()上做了这个,用编程方式,有很多的raycast和GetComponent <>()等等。 现在,我只是宣布的东西公开(违反封装?),只是简单地序列化这个信息,一旦由编辑脚本生成的场景…哪个更正确? 我的方法应该是什么可以序列化的序列化? 还是写更多的初始化代码来传达一些解释为什么这些值是他们是什么?

C ++ GameState管理

我一直在试图用C ++来制作游戏引擎,并遇到了游戏状态管理的困境。 我已经做了大量的研究,并find了从派生类的游戏引擎到使用枚举的许多方法,我想知道管理游戏状态的最有效的方法。 编辑 我想知道其他人如何实现他们的游戏状态管理,即你最喜欢什么,为什么你喜欢它。 另外,任何通常关于游戏状态的教程/代码示例也将非常感谢。