当前位置: 首页 > news >正文

ue4 曲线图实现 蓝图_UE4[蓝图]只需一秒!最速实现【二段跳】

409c3188129290a78e4d00e244ec7340.png

我是刘茗,一个专注各种有趣玩法的开发者。

本次带来的是二段跳的教程。

在许多动作游戏中,都有着【二段跳】这样的游戏系统。本文将教大家一个最快实现二段跳的方法。

在Character头文件中,我们可以找到:

最大跳跃次数的定义

    /**
     * The max number of jumps the character can perform.
     * Note that if JumpMaxHoldTime is non zero and StopJumping is not called, the player
     * may be able to perform and unlimited number of jumps. Therefore it is usually
     * best to call StopJumping() when jump input has ceased (such as a button up event).
     */
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Replicated, Category=Character)
    int32 JumpMaxCount;

在Character.cpp中,这个参数会在CanJumpInternal_Implementation函数中被使用。

5cd43691ba4a538c7deb9346d86235a8.png

因此,继承Character类的对象可以修改上述参数来实现

303c76de68fb295ab3cca7daee3afd6f.png

当我们把这个参数改成2的时候……二段跳已完成

通过修改这个参数,我们还可以实现三段跳、四段跳、各种跳都可以!

看到这里,觉得不够过瘾的朋友们在这里附上……彩蛋

跳跃系统的分析与研究

首先看一下Jump函数:

94087e35b4c90d195037ad87c9b627c5.png

这里发现bPressedJump被设置成了true,那么这个变量在哪里被使用了呢?在CheckJumpInput函数中。

180bd126e5071a479df492336e35c937.png
const bool bDidJump = CanJump() && CharacterMovement->DoJump(bClientUpdating);

在上面这一行代码中,我们发现这里调用了CharacterMovement组件的DoJump函数。

跳转到DoJump函数中

1f74e7e0810a9caedfa94a7a5d7125bd.png

这里对Velocity的Z值进行了赋值,以及设置了运动模式为Falling。

显然——

这个便是Jump功能真正实现函数了。

此外,Character类还提供了一些蓝图接口供开发者定制。

	/** Let blueprint know that we were launched */
	UFUNCTION(BlueprintImplementableEvent)
	void OnLaunched(FVector LaunchVelocity, bool bXYOverride, bool bZOverride);

	/** Event fired when the character has just started jumping */
	UFUNCTION(BlueprintNativeEvent, Category=Character)
	void OnJumped();

在跳跃和落地时,可以添加一些定制化的功能。

最后祝热爱自己事业的朋友们——

人(帅/美)( )大

bd380ac6a8571e4f19f153b004b8238b.png

相关文章:

  • 临键锁如何实现幻读_阿里面试:如何用Redis实现分布式锁?
  • 相机裁剪旋转_测试版的Windows 10相机应用程序开始支持文档扫描
  • eve战巡族伤害_新版本各族3级战巡资料【纯手打】
  • 索尼的hlg是什么_hlg(索尼hlg和slog的区别)
  • 卷积过滤器的宽度_02卷积层与池化层中的核与过滤器
  • yum mysql5.5_yum安装mysql5.5及修改root密码
  • php mysql 二进制_用mysql存储二进制数据流
  • 如何修改mysql连接哪个数据库_如何修改MySQL数据库名称
  • mysql hibernate save_java Hibernate save()与persist()区别
  • mysql database 函数_MySQL中DATABASE()和CURRENT_USER()函数的示例详解
  • mysql 21_MySQL中,21个写SQL的好习惯(修正版)
  • mysql limit 后子查询_Mysql子查询用limit
  • mysql5.5.62怎么使用_centos7 安装 mysql5.5.62
  • php mysql 排名算法_PHP实现四种基础排序算法的运行时间比较(推荐)
  • python 输出字典字符_从服务器到字典的python输出字符串
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • [deviceone开发]-do_Webview的基本示例
  • create-react-app做的留言板
  • download使用浅析
  • mongo索引构建
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • MySQL几个简单SQL的优化
  • swift基础之_对象 实例方法 对象方法。
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 浮现式设计
  • 简单实现一个textarea自适应高度
  • 开源SQL-on-Hadoop系统一览
  • 区块链共识机制优缺点对比都是什么
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 用Canvas画一棵二叉树
  • 用Visual Studio开发以太坊智能合约
  • 原生 js 实现移动端 Touch 滑动反弹
  • Java数据解析之JSON
  • #Linux(make工具和makefile文件以及makefile语法)
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (27)4.8 习题课
  • (Matlab)使用竞争神经网络实现数据聚类
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (windows2012共享文件夹和防火墙设置
  • (独孤九剑)--文件系统
  • (二十四)Flask之flask-session组件
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (转) Face-Resources
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .bat批处理出现中文乱码的情况
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET gRPC 和RESTful简单对比
  • .Net IOC框架入门之一 Unity
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件