10.25UEC++/小试牛刀(笨鸟先飞案例)

1.思路整理:

如何入手?

角色可能是每个游戏的最重要的部分,所以一般可以先从角色入手,如果游戏很复杂,可以进行拆分设计。


蓝图创建地图:

创建默认Pawn:

编写GameMode默认构造函数:

 将创建的BirdPawn设置为默认Pawn


引入Paper2D模块:会加载FlipBook,类似连续帧数图片;

 在UE4中创建FlipBook序列:

 创建飞行动画:(三帧)

 选取Sprite类型的资产(但是图片加载进入时,是纹理类型)

 转换纹理到Sprite:

 将图片按照帧率填入:


FlipBook面板:

单帧也可以拖动进行调整帧率:

 

 UEC++中编写BirdPawn代码,首先创建根组件(能力)

创建一个FlipBook组件

将FlipBook绑定到根组件上:


可以被加载到Ue中的能力:

 

添加相机:

 将UE中动画资源加载到FlipBook上:

调整相机位置,为了垂直于图片:


设置背景:

怎么知道一个资源需要什么样的组件呢?

把资源拖入场景,组件就会显示:

创建组件对象:

 创建渲染组件:并且设置为根节点

 将创建的随机背景切换函数进行实现:

在BeginPlay中调用函数:

分析:在什么时候开始设置背景?(游戏运行时,那么需要在GameMode中写初始化背景逻辑):创建一个类对象

BeginPlay中进行创建背景Actor:

Ue运行结果显示:

显示不出背景原因分析:由于相机吊臂的碰撞机制,当有物体在相机和相机关联物体之间时,相机吊臂会向前推,产生碰撞,所以需要关闭相机吊臂碰撞:

编译运行:

 随机背景设置:分析:首先要确定有几个背景,就要创建几个类对象:

 创建完对象之后,要先将资源加载进来:

如果都为空,报错:

 随机赋值给背景根组件:(设置背景)(NEW知识:Fmath,随机取值)


 将相机设置为非正交关系(投射关系)(2D游戏不会因摆放位置而产生视觉差距):

改变投射宽度:


设置地面(会移动的地面):

 创建一个地板类,会移动,需要加载资源;移动是行为,资源是属性:所以创建类对象,构建移动函数:

 在构造函数中进行初始化属性:

移动的行为定义函数:

设置三块板子:

 初始化三块板子:

初始化板子位置:

 如果板子出了屏幕,则在后面再次出现:


循环播放地板移动优化:


 设置飞行:分析(飞行是状态,所以需要多种状态,使用枚举类型定义状态)

在类内部定义枚举类型变量:   

 绑定输入事件:

飞行函数:

 改变状态函数:

设置力:


添加与地板碰撞:

首先创建碰撞函数:(代码段)动态代理需要加UF函数:

 在初始化函数中绑定物理碰撞:

 碰撞逻辑模板:


设计小鸟抬头:分析(向上飞行,头向上抬,向下落,头向下,所以头的方向是和飞行时x轴的偏移有关,当X正向偏移,小鸟的z轴旋转(以x.speed为依据)):

设置声音 :

 设计管道:

创建actor类,用数组管理:

设置根节点:

加载资源:

 以for循环,进行设置节点,然后绑定到根节点上,将新设计的接待你绑定在Group节点上,设置节点的位置: 


 设计管道逻辑:

定义变量:

gameplay时:

随机产生  数组:

 随机出现不同排列的管道:

更新管道的位置:在tick中调用:

 


加分设计:新建GameState:

行为和属性:

 在管道移动中,会产生分数变化,所以在管道类中进行编写加分逻辑(调用默认GameStateBase):


整理逻辑到GameMode中:

定义一个枚举类型记录游戏状态:

 

定义类指针:在GameMode中设定速度

 改变状态函数:

使用控制台程序进行控制游戏当前状态:(0重置,1开始,2结束)

 

 生成类对象:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/37915.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【机器人模拟-02】 模拟移动机器人设置里程计

一、说明 在本教程中,我将向您展示如何设置移动机器人的测程。本教程是“机器人模拟”指南中的第二个教程。测量位移是仿真中的重要内容,设置测程的官方教程在此页面上,但我将逐步引导您完成整个过程。 您可以在此处获取此项目的完整代码。让我们开始吧! 二、ROS 2 中的里程…

dede编辑器修改成纯文本编辑器的方法

我在做优秀啦网站大全的时候需要的正文内容都不需要设置什么文字样式,所以我需要把编辑器上的工具全部取消掉,包括会员投稿中的编辑器工具栏全部取消掉或者屏蔽隐藏掉,所以我需要把DEDE编辑器修改成纯文本编辑器的方法如下:如图&a…

【Docker】Docker高级网络(NetWork)

【Docker】Docker高级网络(NetWork) 文章目录 【Docker】Docker高级网络(NetWork)1. 概述2. 网络2.1 网桥类型2.2 创建网络自定义桥2.3 查看所有网络2.4 查看特定网络的细节2.5 删除特定网络2.6 多个容器使用指定网络 参考文档:高级网络配置 Docker – 从入门到实践…

力扣小技巧:如何用最简单的方式实现小写字母转换

本篇博客会讲解力扣“709. 转换成小写字母”的解题思路,这是题目链接。 本题的解法非常简单,只需利用tolower函数即可。这个函数的作用是将所有大写字母转换为小写字母,而对其他字符不做任何改变。 char * toLowerCase(char * s){// 把字符串…

Spring接收前端传递数据的方式

搭建项目 然后点击下一步完成即可搭建成功 在pom文件中导入lombok的jar包,帮助我们快速创建实体类 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.16</version> </dependency&…

外包软件定制开发中质量控制

引言 在外包软件定制开发项目中&#xff0c;确保交付的软件质量符合预期是至关重要的。由于外包团队通常是独立于企业的&#xff0c;他们可能没有对企业的业务需求和标准有深入的了解。因此&#xff0c;质量控制成为一个重要的挑战。本文将探讨外包软件定制开发中常见的质量控…

ubuntu安装单个redis服务

1.apt-get install redis-server 使用lighthouse用户这样操作会报与权限有关的错误&#xff0c; 改成使用root账号操作 2.安装完成后&#xff0c;Redis服务器会自动启动&#xff0c;查看进程是否正常启动 ps -axu|grep redis redis 18689 0.1 0.4 40136 6860 ? …

【深度学习】受限玻尔兹曼机 (RBM) 初学者指南

一、说明 受限玻尔兹曼机&#xff08;Restricted Boltzmann Machine&#xff0c;RBM&#xff09;是一种基于能量模型的人工神经网络。它只有一个隐层&#xff0c;将输入层和隐层中的每个神经元互相连接&#xff0c;但不同层的神经元之间没有连接。RBM是一种无向的概率图模型&am…

解决win11系统下vivado使用RTL分析闪退、小蓝熊easy anti chat无法启动问题

最近在接触使用vivado时被这个软件庞大的包体和繁多的报错搞得焦头烂额&#xff0c;经过多次尝试&#xff0c;我解决了两个困扰我许久的关乎软件正常使用的问题&#xff0c;将解决办法分享给大家。 一.RTL analysis运行闪退 这个问题关系到程序的正常使用&#xff0c;主要发生…

9.带你入门matlab假设检验(matlab程序)

1.简述 函数 ztest 格式 h ztest(x,m,sigma) % x为正态总体的样本&#xff0c;m为均值μ0&#xff0c;sigma为标准差&#xff0c;显著性水平为0.05(默认值) h ztest(x,m,sigma,alpha) %显著性水平为alpha [h,sig,ci,zval] ztest(x,m,sigma,alpha,tail) %sig为观察…

Pytorch深度强化学习1-3:策略评估与贝尔曼期望方程详细推导

目录 0 专栏介绍1 从一个例子出发2 回报与奖赏3 策略评估函数4 贝尔曼期望方程5 收敛性证明 0 专栏介绍 本专栏重点介绍强化学习技术的数学原理&#xff0c;并且采用Pytorch框架对常见的强化学习算法、案例进行实现&#xff0c;帮助读者理解并快速上手开发。同时&#xff0c;辅…

油猴脚本-Bilibili剧场模式仿Youtube

对比某个不存在的视频网站&#xff08;YouTube&#xff09;&#xff0c;以及B站的播放模式&#xff0c;普通模式以及网页全屏之间都有一个“中间档”&#xff0c;油管的叫 剧场模式&#xff0c;B站的叫 宽屏模式。 剧场模式 宽屏模式 相比之下&#xff0c;还是更喜欢油管的剧…

高并发的哲学原理(六)-- 拆分网络单点(下):SDN 如何替代百万人民币的负载均衡硬件

上一篇文章的末尾&#xff0c;我们利用负载均衡器打造了一个五万 QPS 的系统&#xff0c;本篇文章我们就来了解一下负载均衡技术的发展历程&#xff0c;并一起用 SDN&#xff08;软件定义网络&#xff09;技术打造出一个能够扛住 200Gbps 的负载均衡集群。 负载均衡发展史 F5 …

网络协议与攻击模拟-17-DNS协议-报文格式

二、DNS 查询 客户机想要访问www.baidu.com&#xff0c;根据自己的 TCP / IP 参数&#xff0c;向自己的首选 DNS 服务器发送 DNS 请求 首选 DNS 收到客户机的请求后&#xff0c;会去查询自己的区域文件&#xff0c;找不到www.baidu.com的 IP 地址信息&#xff08;将请求转发到…

【论文阅读】TransCAM: Transformer Attention-based CAM Refinement for WSSS

分享一篇阅读的用于弱监督分割的论文 论文标题&#xff1a; TransCAM: Transformer Attention-based CAM Refinement for Weakly Supervised Semantic Segmentation 作者信息&#xff1a; 代码地址&#xff1a; https://github.com/liruiwen/TransCAM Abstract 大多数现有…

mybatis双重foreach实现遍历map中的两个list数组

文章目录 实现背景&#xff1a;前端传值的格式Debug断点调试java如何解析json对象第一步 JSONArray.fromObject()第二步 遍历jsonArray第三步 mybatis双重foreach foreach标签说明最终效果 实现背景&#xff1a; 前端传值时可能会有多个字段传递过来&#xff0c;需要后台将这多…

SpringBoot快速实践 --Ⅰ

文章目录 启动一个SpringBoot项目如何替换内嵌容器玩转SpringBoot配置全局异常处理过滤器拦截器使用Lombok简洁代码使用IDEA HTTP Client进行接口调试 启动一个SpringBoot项目 如果你觉得使用官网来创建太慢了&#xff0c;那你直接把以前项目的依赖粘过来就行了&#xff1a; …

《银行法律法规》三、银行管理——2、公司治理、 内部控制与合规管理

第二章 公司治理、 内部控制与合规管理 第一节 公司治理 考点1 银行公司治理概述★★ 商业银行公司治理是指股东大会、 董事会、 监事会、 高级管理层、 股东及其他利益相关者之间的相互关系&#xff0c; 包括组织架构、 职责边界、 履职要求等治理制衡机制&#xff0c; 以…

【原生HTML+SpringBoot】电子病历编辑器源码

一、简介 本系统主要面向医院医生、护士&#xff0c;提供对住院病人的电子病历书写、保存、修改、打印等功能。本系统基于云端SaaS服务方式&#xff0c;通过浏览器方式访问和使用系统功能&#xff0c;提供电子病历在线制作、管理和使用的一体化电子病历解决方案&#x…

【hadoop】部署hadoop的本地模式

hadoop的本地模式 本地模式的特点部署本地模式测试本地模式是否部署完成 本地模式的特点 没有HDFS、也没有Yarn只能测试MapReduce程序&#xff0c;作为一个普通的Java程序处理的数据是本地Linux的文件一般用于开发和测试 部署本地模式 进入该路径 /root/training/hadoop-2.7…