我正在创建这个2D游戏,我遇到跳转功能问题。它起作用,角色上下跳跃,但我希望能够跳跃然后在空中移动角色,例如。所以它可以跳到一个平台上。我正在使用SDLK ......
case SDL_KEYDOWN:
switch (event.key.keysym.sym){
RArrow = (event.button.button = SDLK_RIGHT);
Jump = (event.button.button = SDLK_SPACE);
if((RArrow) && (Jump))
{
if(g->getPlayer()->worldY = GROUND_LEVEL)
{
g->getPlayer()->jump();
g->getPlayer()->move(10);
}
}
break;
这是我尝试过的方法之一。我也尝试在跳跃盒内部进行切换功能以向左或向右导航,但我要么没有正确编码,要么就是没有工作。
答案 0 :(得分:0)
我不熟悉SDLK以及在实际游戏开发中如何实现这一点。 然而,我实现这一点的一种方法是查看每个游戏勾号是否按下了两个键。因此,如果按下w + d,则角色会同时向上和向右移动。但在我看来,这是一个黑客的解决方案。
答案 1 :(得分:0)
通过列出的实现,看起来角色只有在地面上才会向右移动。您需要更改代码以便每次打勾,游戏都会检查角色是否在跳跃,如果是,则按照角色面向/跳跃的方向移动角色。此代码可能需要存在于事件处理程序之外。
理想情况下,你的键盘事件处理程序只会在字符上设置一个标志,指示它们正在跳跃和向哪个方向移动,然后在你的游戏循环中调用一个实际处理跳跃的update()方法(并在字符时停止跳转)与世界几何体碰撞,如地板或墙壁。)
希望这有帮助!
修改强>
没有看到你的其余代码,我不能说更多。我对C ++也不是很好,我假设这是用的。您可以实现此目的的一种方法是: