55. UE5 RPG 处理当前功能在多人模式中的问题

news2024/9/22 15:31:19

在UE里面,我们运行项目可以设置多种网络模式,主要是分为三种:

  1. 运行Standalone 就是单人模式,没有网络交互
  2. 以监听服务器运行,在界面里运行的游戏会作为服务器使用
  3. 以客户端运行,UE会单独运行一个线程作为服务器端,所有的游戏线程都为客户端
    在这里插入图片描述
    接下来,我们要调试之前实现功能在多人玩法下会不会出现问题,我们以上面的方式设置运行,看看会有哪些问题出现。

敌人角色初始化问题

在角色初始时,报了一个错误
在这里插入图片描述
在获取角色配置时,无法获取到配置文件,这个配置文件是设置到GameMode上面的。
在这里插入图片描述
GameMode内容只运行在服务器端,在客户端是无法获取到其设置的内容,所以会引发对应的报错,所以,我们需要在初始化时,判断是否拥有控制权。
初始化角色属性属于应用GE到角色ASC,应用完成的属性会自动复制到客户端,所以我们初始化敌人时,需要判断一下是否是服务器。
我们可以通过HasAuthority()来判断
在这里插入图片描述
在初始化角色属性时,也需要
在这里插入图片描述
然后编译查看问题,这个问题看来就解决了。

解决客户端攻击在服务器端显示

我们在客户度攻击敌人时,发现伤害数字并没有在客户端显示,而只是在服务器端上面显示数字,这个问题是在AttributeSet(服务器)调用时,获取到的控制器是服务器的,所以在服务器上播放文字。
在这里插入图片描述
我们查看以下代码,我们是通过的UGameplayStatics::GetPlayerController获取的控制器
在这里插入图片描述
看函数发现第一个值是获取对象的上下文,我们在服务器端传入的角色对象也是属于服务器端的。
在这里插入图片描述
所以,这里我们无法直接使用静态函数去获取,我们可以直接从SourceCharacter上面获取
在这里插入图片描述
这样就实现了,在客户端上显示伤害数字
在这里插入图片描述

解决在客户端运行时报错行为

接下来,我们切换到单独客户端运行
在这里插入图片描述
在运行时会出现错误,经过我检查因为创建的自定义FRPGGameplayEffectContext复制的父类的函数,没有做到统一,所以读取内容时,我们新增的内容无法复制,现在修改后,就没有问题了
在这里插入图片描述
然后就是第二个问题,我们在客户端模式下,如果攻击敌人,会发现没有释放出火球,但是自身会减血
在这里插入图片描述
推理一下,就是火球术直接攻击了自己,造成了伤害,而没有发射出去。
接下来编译运行,我们发现火球术能顺利发射出去了,但是它也无法和目标产生交互
在这里插入图片描述
至于为什么无法和敌人产生碰撞交互,我们暂停,按F8,发现火球术是在敌人头上飞过去的
在这里插入图片描述
造成这个的原因是因为,火球术是在法杖的头部发射出去的,并且我们在生成火球时,将火球设置为了水平飞行,所以,火球现在直接在敌人头上飞过。
所以我们把Pitch取消设置为0
在这里插入图片描述
现在就没有问题了
在这里插入图片描述

处理技能和自身产生碰撞的问题

首先我们看以下Laya里面是如何实现的,它是在蓝图中,忽略了施放者的碰撞体。
在这里插入图片描述
经过我测试这种方法只能忽略碰撞,如果是OnComponentBeginOverlap这种还是会触发,经过查询数据需要在触发时进行判断,所以我们需要在创建时,设置好它的触发者
在创建发射物时,设置好释放者,我们设置的是ASC的AvatarActor
在这里插入图片描述
接下来在发射物类的Overlay回调函数中,设置判断和触发碰撞的物体是否和释放者一致,这里,我们也不需要用从GE的Context获取,因为之前这是判断发现触发碰撞是,GE里面数据是空的,证明在碰撞时,数据还未设置,所以,我们在初始化时设置的必能够获取到。
在这里插入图片描述

获取属性报错信息

在获取属性时,没有设置的SetByCaller会报错
在这里插入图片描述
在ExecCalc_Damage里设置的方法获取
在这里插入图片描述
我们查看原方法,发现如果第二个值为true才会打印debug,但是不知为何我们没有设置也会报出来,所以,我们直接增加全配置项。
在这里插入图片描述
增加两个参数设置,没有了报错
在这里插入图片描述
查看了一下没有其它问题,就告一段落。
后面我们将制作敌人的AI。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

操作系统课程实验1-进程调度模拟实验

操作系统课程实验1-进程调度模拟实验 一、实验介绍 1.1 实验目的 本实验模拟在单处理机环境下的处理机调度,帮助理解进程调度的概念,深入了解进程控制块的功能,以及进程的创建、撤销和进程各个状态间的转换过程。 1.2 实验内容 进程调度算…

当HR问你是否单身时,该怎么回答?

知识星球(星球名:芯片制造与封测技术社区,星球号:63559049)里的学员问:我是晶圆厂厂务工程师,最近在面试新工作,但是几乎每家HR都会问我同一个问题:你结婚没有&#xff1…

专业的力量:在自己的领域成为专家

专业的力量:在自己的领域成为专家 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 现在稀缺的已不再是信息资源,而是运用信息的能力。过去的海…

【全开源】场馆预定系统源码(ThinkPHP+FastAdmin+UniApp)

一款基于ThinkPHPFastAdminUniApp开发的多场馆场地预定小程序,提供运动场馆运营解决方案,适用于体育馆、羽毛球馆、兵乒球馆、篮球馆、网球馆等场馆。 场馆预定系统源码:打造高效便捷的预定体验 一、引言:数字化预定时代的来临 …

计算机毕业设计Python+Spark+PyTroch游戏推荐系统 游戏可视化 游戏爬虫 神经网络混合CF推荐算法 协同过滤推荐算法 steam 大数据

毕业设计(论文) 基于SpringBoot的游戏防沉迷系统的设计与实现 摘 要 随着网络游戏市场的持续火爆,其最明显的负面影响----“网络游戏沉迷问题”已成为当前社会普遍关心的热点问题。根据2010年8月1日实施的《网络游戏管理暂行办法》,网络游…

记忆力和人才测评,如何提升记忆力?

什么是记忆力? 如何通俗意义上的记忆力?我们可以把人的经历、经验理解成为一部纪录片,那么已经过去发生的事情,就是影片之前的情节,对于这些信息,在脑海里,人们会将其进行处理和组合&#xff…

如何关闭或者减少屏蔽 CloudFlare 的真人检测

经常浏览境外网站的应该常碰到一个真人检测的提示(如下图所示)。最近,明月就收到了一个知乎上的付费咨询:问我如何去掉这个提示,由此明月也特别的研究了一下这个“真人检测”,这算是 CloudFlare 的一个特色了,基本上大家看到站点访问有这个提示的几乎都是用了 CloudFlar…

vue3 ts问题 找不到模块“@/views/home/index.vue”或其相应的类型声明。

1. 找不到模块“/views/HomeView.vue”或其相应的类型声明 今天帮同事看了一个问题,他尝试用vitevue3tspinia创建项目,结果刚上来就遇到这么一个问题 2. 解决办法 出现这个问题的原因就是:ts只支持导出导入模块,但是vue不是模块…

CRMEB开源商城标准版系统前端技术架构与实践探索

摘要: 随着电子商务的蓬勃发展,开源商城系统因其灵活性、可扩展性和成本效益受到了广泛关注。本文以CRMEB开源商城系统为例,探讨了其前端技术架构、开发实践及未来展望。通过对CRMEB系统前端技术的深入分析,旨在为开发者提供有价值…

最大子矩阵+01矩阵

最大子矩阵 题目 思路 确定一个矩阵中的子矩阵,只需要确定矩阵对角线上两点的坐标即可, 在确定了子矩阵之后,还需要计算子矩阵中各元素之和,如果按照常规的循环方法来解决,时间复杂度是O(N^6),对于本题20…

Java——图书管理系统万字详解(附代码)

框架搭建 book包 将书相关的放到book包中,创建一个Book类用来设置书的属性,包括书名、作者、价格、类型、是否被借出等。 以上属性均被private所修饰 利用编译器生成构造方法(不需要构造isBorrowed,因为其初始值为false&#…

2024年5月大语言模型论文推荐:模型优化、缩放到推理、基准测试和增强性能

前一篇文章总结了关于计算机视觉方面的论文,这篇文章将要总结了2024年5月发表的一些最重要的大语言模型的论文。这些论文涵盖了塑造下一代语言模型的各种主题,从模型优化和缩放到推理、基准测试和增强性能。 大型语言模型(llm)发展迅速,跟上…

8个图神经网络的典型用例

虽然 ChatGPT 或 Diffusion 模型等 AI 系统最近备受关注,但图神经网络 (GNN) 却发展迅速。在过去的几年中,GNN 悄然成为众多激动人心的新成就背后的黑马,这些成就从纯学术研究突破一路发展到大规模积极部署的实际解决方案。 Uber、谷歌、阿里…

idea configuration 配置 方便本地启动环境切换

idea 再项目启动的时候避免切换环境导致上线的时候出现环境配置问题 可以再idea 的 configuration 中配置项目的 vm options 虚拟机的内容占用 -Xmx256m -Xms256m -Xmn100m -Xss256k program arguments properties 文件中需要修改的配置参数 active profiles 指定启动的本…

快速幂求逆元与逆元

我上一篇博客链接写的是多个数求乘法逆元而快速幂求逆元用于单个数求乘法逆元 逆元是对分数取模用的 对于除法取模不成立,即(a/b)%p≠(a%p/b%p)%p。求逆元的思路:(一般ACM的题目都是对1e97这种素数取模,所以gcd(a,p)1)a*b1(mod p) > b1/a…

毕设 大数据校园卡数据分析

文章目录 0 前言1 课题介绍2 数据预处理2.1 数据清洗2.2 数据规约 3 模型建立和分析3.1 不同专业、性别的学生与消费能力的关系3.2 消费时间的特征分析 4 Web系统效果展示5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设…

STM32F1之OV7725摄像头·像素数据输出时序、FIFO 读写时序以及摄像头的驱动原理详解

STM32F1之OV7725摄像头-CSDN博客 STM32F1之I2C通信-CSDN博客 目录 1. 像素数据输出时序 2. FIFO 读写时序 2.1 写时序 2.2 读时序 3. 摄像头的驱动原理 1. 像素数据输出时序 主控器控制 OV7725 时采用 SCCB 协议读写其寄存器,而它输出图像时则使用 VGA 或…

【Linux signal】

Linux signal 一、信号分类二、什么是信号集?三、信号的3个处理过程3.1 发送信号3.1.1 向自身发送信号(raise)3.1.2 向别的进程发送信号(kill)3.1.3 发送闹钟信号(alarm) 3.2 接收(注册)信号3.3 处理信号 在Linux操作系统中,SIGUSR1和SIGUSR2是用户定义的…

仅需一块 4GB 的 GPU ,就能运行开源大语言模型:Llama3 70B

最强的开源大语言模型 Llama3 已经发布一段时间了,一些盆友资源有限,私信询问是否可以使用 4GB 的 VRAM 在本地运行 Llama3 70B。 与 GPT-4 相比,Llama3 的性能如何?Llama3 使用了哪些关键的前沿技术使其变得如此强大&#xff1f…

CIM模型

CIM 是 Esri 制图信息模型。 它是一个地图内容规范,用于记录在保存、读取、引用或打开时如何永久保留描述不同项目组件的信息。 该规范以 JSON 表示,适用于 ArcGIS 应用程序和 API 中的地图、场景、布局、图层、符号和样式。 CIM 不仅限于制图设置。 要了解属性的组织方式以及…