【发布时间】:2019-01-12 17:35:11
【问题描述】:
我想为我的游戏创建一种处理动画的新方法。目前,我使用两个变量_physics_State 和_direction_State 分别用于开关盒和嵌套开关盒,从而损害对象动画状态。我想摆脱这种使用开关盒的方法。
switch (_physics_State)
{
case OBJECT_PHYSICS_STATE_GROUNDED:
switch(_direction_State)
{
case OBJECT_DIRECTION_UP: _animation_State = ANIMATION_STATE_YS_IDLE_UP; break;
case OBJECT_DIRECTION_UP_RIGHT: _animation_State = ANIMATION_STATE_YS_IDLE_UP_RIGHT; break;
case OBJECT_DIRECTION_UP_LEFT: _animation_State = ANIMATION_STATE_YS_IDLE_UP_LEFT; break;
case OBJECT_DIRECTION_RIGHT: _animation_State = ANIMATION_STATE_YS_IDLE_RIGHT; break;
case OBJECT_DIRECTION_RIGHT_DOWN: _animation_State = ANIMATION_STATE_YS_IDLE_RIGHT_DOWN; break;
case OBJECT_DIRECTION_DOWN: _animation_State = ANIMATION_STATE_YS_IDLE_DOWN; break;
case OBJECT_DIRECTION_DOWN_LEFT: _animation_State = ANIMATION_STATE_YS_IDLE_DOWN_LEFT; break;
case OBJECT_DIRECTION_LEFT: _animation_State = ANIMATION_STATE_YS_IDLE_LEFT; break;
default: _animation_State = ANIMATION_STATE_YS_IDLE_DOWN; break;
}
break;
}
我想出了通过以特定顺序读取变量并将其存储在哈希映射中来生成字符串的解决方案。除了最后一个变量_speed 之外,这似乎有效。 _speed 是连续的而不是离散的,并且可能有一个值范围仍然会使对象达到相同的动画状态。我不能简单地将速度存储为一个简单的值。您将如何处理这些连续数据,让我可以使用离散数据进行搜索?
std::string animation_state_string_results = ""
+ std::to_string(_physics_State)
+ "-" + std::to_string(_direction_State);
+ "-" + std::to_string(G_button_Press_Value);
+ "-" + std::to_string(_speed);
【问题讨论】:
-
不使用
switch,为什么不使用表格(至少对于您发布的代码块)?我不确定我理解你对_speed变量的意思,所以我没有答案。 -
阅读此“我想摆脱这种使用开关盒的方法。” “我想出了通过以特定顺序读取变量并将其存储在哈希映射中来生成字符串的解决方案。”这个问题是速度不是离散的。它就像一个单元。如果速度为 4 或 11,则这些数字之间的所有值的动画状态仍然相同。
-
我不明白。没有办法将连续数据作为离散数据进行搜索。但你似乎明白这一点。所以你想要什么?如果速度是真的问题,你可以留在
swtich case,但我只会std::map<direction_states, animation_states>并使用find。 -
我没说我什么都懂。我只是问是否有办法搜索连续数据。我有四个不同的变量要处理。 “_speed”就是其中之一。我需要确认一个范围内的东西而不是一个值。
标签: c++ continuous