游戏中的 MVC 模式:动画?
MVC Pattern in Games: Animation?
假设我的游戏有实体,假设所有这些实体都有一个由多个形状组成的碰撞碰撞箱。我们还假设使用骨骼动画并且每个碰撞形状对应一个骨骼。
我通过为每个实体类型设置一个数据容器、渲染器和控制器来实现基本的 MVC 模式,fE:
class MyEntity:public Entity{
public: int x, y, state; vector<hitbox> hitboxArray;
class MyEntityRenderer:public Renderer{
void render(){
...
}
}
class MyEntityController:public Controller {
update(){}
inputstuff(){}
}
如果我希望根据动画及其进度修改碰撞框翻译,我现在如何才能真正实现动画?
如果我只有一个动画,我显然会把所有的东西都放在渲染器中,但现在呢?我如何应用 MVC 解决这个问题?
您的动画只是模型的视觉渲染。你可以让你的实体进入一个 "jumping" 状态,这将在模型中为它的 hitbox 操纵它的 y 变量。当您渲染模型时,如果您的实体处于跳跃状态,则显示其跳跃动画或图像。
您不想根据动画来操作您的碰撞箱,而是希望根据碰撞箱来操作您的动画。
假设我的游戏有实体,假设所有这些实体都有一个由多个形状组成的碰撞碰撞箱。我们还假设使用骨骼动画并且每个碰撞形状对应一个骨骼。 我通过为每个实体类型设置一个数据容器、渲染器和控制器来实现基本的 MVC 模式,fE:
class MyEntity:public Entity{
public: int x, y, state; vector<hitbox> hitboxArray;
class MyEntityRenderer:public Renderer{
void render(){
...
}
}
class MyEntityController:public Controller {
update(){}
inputstuff(){}
}
如果我希望根据动画及其进度修改碰撞框翻译,我现在如何才能真正实现动画?
如果我只有一个动画,我显然会把所有的东西都放在渲染器中,但现在呢?我如何应用 MVC 解决这个问题?
您的动画只是模型的视觉渲染。你可以让你的实体进入一个 "jumping" 状态,这将在模型中为它的 hitbox 操纵它的 y 变量。当您渲染模型时,如果您的实体处于跳跃状态,则显示其跳跃动画或图像。
您不想根据动画来操作您的碰撞箱,而是希望根据碰撞箱来操作您的动画。