自制FPSGame的时候,添加了跳跃功能始终不能工作,求解

该主题包含 9 个回复,有 2 个参与人,并且由 风之神韵 的头像 风之神韵10 月, 2 周 前 最后一次更新。

正在查看 10 个帖子 - 1 至 10 (共计 10 条)
  • 作者
    帖子
  • #28216
    11 11 的头像
    11, 11
    学员
    注册日期: 2015/10/28
    发帖数: 23
    回帖数: 31

    我在编辑器里Input加好了Jump对应的Space Bar,VS2015里面添加了:
    InputComponent->BindAction(“Jump”, IE_Pressed, this, &ACharacter::Jump);
    InputComponent->BindAction(“Jump”, IE_Released, this, &ACharacter::StopJumping);
    但是跳跃不起作用,不知道为何?我用的是4.10.2版本,之前添加的前后左右移动、鼠标控制视口朝向都没问题的。代码段如下:
    // Called to bind functionality to input
    void AFSCharacter::SetupPlayerInputComponent(class UInputComponent* InputComponent)
    {
    //Super::SetupPlayerInputComponent(InputComponent);
    check(InputComponent);

    InputComponent->BindAction(“Jump”, IE_Pressed, this, &ACharacter::Jump);
    InputComponent->BindAction(“Jump”, IE_Released, this, &ACharacter::StopJumping);
    InputComponent->BindAxis(“MoveForward”, this, &AFSCharacter::MoveForward);
    InputComponent->BindAxis(“MoveRight”, this, &AFSCharacter::MoveRight);
    InputComponent->BindAxis(“Turn”, this, &APawn::AddControllerYawInput);
    InputComponent->BindAxis(“LookUp”, this, &APawn::AddControllerPitchInput);

    }
    那个BindAxis对应的具体函数实现我就不放在问题里了,因为都能正常工作。

    #28217
    风之神韵 的头像
    风之神韵
    教师
    注册日期: 2014/06/20
    发帖数: 2
    回帖数: 361

    InputComponent->BindAction(“Jump”, IE_Pressed, this, &ACharacter::Jump);

    直接Jump就可以了 不要StopJump

    #28218
    风之神韵 的头像
    风之神韵
    教师
    注册日期: 2014/06/20
    发帖数: 2
    回帖数: 361

    再一个要确保你的这个空格键位不要被多次占用,比如Pawn里用了空格键,Controller里就不要用了,否则其中某一个会没有响应

    #28221
    11 11 的头像
    11, 11
    学员
    注册日期: 2015/10/28
    发帖数: 23
    回帖数: 31

    一开始仿照视频里面的就不要StopJump的,还是不行的,而且空格键也没有被其他功能占用掉。我看了下官方第一人称C++例子,仿照他的,他的跳跃正常,不知为何我的就是不行。

    #28223
    风之神韵 的头像
    风之神韵
    教师
    注册日期: 2014/06/20
    发帖数: 2
    回帖数: 361

    打断点看下 Jump函数被调用了吗? 看在哪被阻断的,有代码你可以看到每个细节

    #28224
    风之神韵 的头像
    风之神韵
    教师
    注册日期: 2014/06/20
    发帖数: 2
    回帖数: 361

    GetCharacterMovement()->JumpZVelocity = 200.f; 这个是控制跳跃的初始速度的。

    #28227
    11 11 的头像
    11, 11
    学员
    注册日期: 2015/10/28
    发帖数: 23
    回帖数: 31

    谢谢风神的耐心讲解。
    我在DebugGame Editor模式下,如果项目属性设为”$(SolutionDir)$(ProjectName).uproject”就不能运行跳跃,其他功能可以,如果加上-debug,即”$(SolutionDir)$(ProjectName).uproject” -debug模式就可以运行跳跃功能。
    又试了下Development Editor模式,可以运行跳跃。
    记得你在视频教程里面讲过在DebugGame Editor模式下打断点时候需要加上-debug,可是为何DebugGame Editor模式下不加上属性里面的-debug,跳跃功能不工作其他功能正常呢?是不是跟jump继承自ACharacter,而MoveForward、Turn等分别继承自AFSCharacter、APawn有关系呢?

    #28249
    风之神韵 的头像
    风之神韵
    教师
    注册日期: 2014/06/20
    发帖数: 2
    回帖数: 361

    凡是Debug类型模式的都需要 加-debug 参数,这样你才是运行的对应的Debug.exe程序。

    比如如果DebugGame Editor 不加 -debug ,那么你运行的exe程序还是 Development模式编译出来的。

    现在你这样做切换到DebugGame Editor模式,参数为 $(SolutionDir)$(ProjectName).uproject -game -debug,
    编译你的项目,然后按F5调试运行,就可以运行刚刚编译好的Debug.exe程序了。

    #28252
    11 11 的头像
    11, 11
    学员
    注册日期: 2015/10/28
    发帖数: 23
    回帖数: 31

    好的,谢谢!编程教学还会不会继续出了?例如讲解网络联机等方面的?

    #28288
    风之神韵 的头像
    风之神韵
    教师
    注册日期: 2014/06/20
    发帖数: 2
    回帖数: 361

    会先出蓝图。网络联机的已经有了,csol三部曲。

正在查看 10 个帖子 - 1 至 10 (共计 10 条)

抱歉,回复评论必需登录。