gpt4 book ai didi

c++ - Sprite 如何跳跃以及它在c++中基于什么逻辑?

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:29 24 4
gpt4 key购买 nike

嘿伙计们,当在 Visual Studio 中使用 C++ 按下向上键时,我一直在尝试实现跳跃。我想要像在空中一样的动量,你仍然可以使用左右键来移动,例如 super 马里奥: D

这基本上就是我的主要类(class)

(MyProjectMain):

void MyProjectMain::KeyDown(int iKeyCode)
{
switch ( iKeyCode )
{
case SDLK_ESCAPE: // End program when escape is pressed
SetExitWithCode( 0 );
break;
case SDLK_SPACE: // SPACE Pauses
break;
case SDLK_UP:
Player::JumpPlayer();
break;
}
}

(玩家类):

void Player::DoUpdate(int iCurrentTime)
{
/*
// Change speed if player presses a key
if ( GetEngine()->IsKeyPressed( SDLK_UP ) )
m_iCurrentScreenY -= 5;
if ( GetEngine()->IsKeyPressed( SDLK_DOWN ) )
m_iCurrentScreenY += 5;
*/
if ( GetEngine()->IsKeyPressed( SDLK_LEFT ) )
m_iCurrentScreenX -= 3;
if ( GetEngine()->IsKeyPressed( SDLK_RIGHT ) )
m_iCurrentScreenX += 3;
if ( m_iCurrentScreenX < 0 )
m_iCurrentScreenX = 0;
if ( m_iCurrentScreenX >= GetEngine()->GetScreenWidth() - m_iDrawWidth )
m_iCurrentScreenX = GetEngine()->GetScreenWidth() - m_iDrawWidth;
if ( m_iCurrentScreenY < 0 )
m_iCurrentScreenY = 0;
if ( m_iCurrentScreenY >= GetEngine()->GetScreenHeight() - m_iDrawHeight)
m_iCurrentScreenY = GetEngine()->GetScreenHeight() - m_iDrawHeight;

// Ensure that the object gets redrawn on the display, if something changed


RedrawObjects();
}


void Player::JumpPlayer(void)
{

}

我必须提一下,我已经成功地让 Sprite 左右移动了,只是这个跳跃让我花了这么长时间。如果您可以将您的解决方案包含在跳转函数中,我会很高兴

非常感谢!!!

最佳答案

不确定你使用的是什么游戏引擎或物理引擎,如果你想创建自己的,那么你可以忽略这个答案:)

无论如何,重新发明轮子是没有意义的。 Cocos2D 是一个开源的 C++ 游戏引擎,支持 Box2D 物理引擎。我强烈建议您检查一下。

然后,创建一个 CCSprite 来代表你的“马里奥”家伙就变得简单了;) 并向他添加一个 CCJumpBy Action 来模拟抛物线跳跃运动。

如果你想让他在空中左右移动,看看这个人的帖子 here

祝你好运!

关于c++ - Sprite 如何跳跃以及它在c++中基于什么逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22574232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com