21uec++多人游戏【AI联机】

这篇具有很好参考价值的文章主要介绍了21uec++多人游戏【AI联机】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一句话,跟掉血有关的代码都在服务器端执行

修改小球的游戏开始函数

在服务器端,小球自动寻找路径

void AASTrackerBot::BeginPlay()
{
	Super::BeginPlay();
	if (Role == ROLE_Authority)
	{
		NextPathPoint = GetNextPathPoint();
	}

	//伤害事件绑定函数
	HealthComp->OnHealthChanged.AddDynamic(this, &AASTrackerBot::HandleTakeAnyDamage);
}

修改SelfDestruct函数

在服务器端小球会对自己施加伤害

void AASTrackerBot::SelfDestruct()
{
	//检查是否已经爆炸了
	if (bExplored)
	{
		return;
	}
	bExplored = true;
	//发生爆炸
	UGameplayStatics::SpawnEmitterAtLocation(GetWorld(), ExplorEffect, GetActorLocation());
	//设置要忽略的actor
	TArray<AActor * > IgnoredActors;
	IgnoredActors.Add(this);
//	UKismetSystemLibrary::PrintString(this, FString::SanitizeFloat(222.0f));

	//伤害在服务器中执行
	if (Role == ROLE_Authority)
	{
		//对自身进行伤害
		UGameplayStatics::ApplyRadialDamage(this, ExplorDamage, GetActorLocation(), ExplorRadius, nullptr, IgnoredActors, this, GetInstigatorController(), true);
		SetLifeSpan(2.0f);
	}
	

	//画出伤害范围
	DrawDebugSphere(GetWorld(), GetActorLocation(), ExplorRadius, 12, FColor::Green, false, 2.0f, 0, 1.0f);
	//发生爆炸声,在actor的位置
	UGameplayStatics::PlaySoundAtLocation(this, ExploedSound, GetActorLocation());
	//自毁
	//Destroy();
	MeshComponent->SetVisibility(false, true);
	MeshComponent->SetSimulatePhysics(false);
	MeshComponent->SetCollisionEnabled(ECollisionEnabled::NoCollision);

}

修改每帧函数

在服务器端,小球自动寻找路径

void AASTrackerBot::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
//	UKismetSystemLibrary::PrintString(this, FString::SanitizeFloat(HealthComp->Health));
	//得到小球自身与下一个点的距离
	if (Role == ROLE_Authority && !bExplored)
	{
		float DistanceToTarget = (NextPathPoint - GetActorLocation()).Size();
		//如果大于阈值,就继续滚
		if (DistanceToTarget > RequiredDistanceToTarget)
		{
			//小球的移动方向
			FVector ForceDirection = NextPathPoint - GetActorLocation();
			ForceDirection.Normalize();
			//小球的推力
			ForceDirection *= MovementForce;
			MeshComponent->ComponentVelocity.Size();
			MeshComponent->AddImpulse(ForceDirection, NAME_None, bUseVelocityChange);
			DrawDebugDirectionalArrow(GetWorld(), GetActorLocation(), GetActorLocation() + ForceDirection, 32, FColor::Red, false, 0.0f, 0, 1.0f);
		}
		//如果到达了路径点,就生成下一个点,继续移动
		else
		{
			NextPathPoint = GetNextPathPoint();
			DrawDebugString(GetWorld(), GetActorLocation(), "Target Reached!");
		}
		//在下一个目标点画一个球
		DrawDebugSphere(GetWorld(), NextPathPoint, 20, 12, FColor::Yellow, false, 0.0f, 0, 1.0f);
	}
	

}

修改重叠函数

在服务器端,小球自爆倒计时

void AASTrackerBot::NotifyActorBeginOverlap(AActor * OtherActor)
{
	if (!bStartSelfDamge)
	{
		ASCharacter * PlayerPawn = Cast<ASCharacter>(OtherActor);
		if (PlayerPawn)
		{
			if (Role == ROLE_Authority)
			{
				GetWorld()->GetTimerManager().SetTimer(TimerHandle_SelfDamage, this, &AASTrackerBot::DamageSelf, 0.5f, true, 0.0f);
			}
			
			bStartSelfDamge = true;
		}

		//将自爆警告声音绑定到根组件
		UGameplayStatics::SpawnSoundAttached(SelfDestructSound, RootComponent);
	}
}

修改生命值组件

	//当前生命值
	UPROPERTY(ReplicatedUsing = OnRep_Health, BlueprintReadOnly, Category = "HealthComponent")
	float Health;

添加网络同步函数

	//生命值同步函数
	UFUNCTION()
	void OnRep_Health(float OldHealth);

实现一下

void USHealthComponent::OnRep_Health(float OldHealth)
{
	//触发自定义事件
	OnHealthChanged.Broadcast(this, Health, OldHealth - Health , nullptr, nullptr, nullptr);

}

为什么要这样同步一下呢

ue5 ugameplaystatics::spawnemitteratlocation,游戏,c++,ue4 

 文章来源地址https://www.toymoban.com/news/detail-550266.html

到了这里,关于21uec++多人游戏【AI联机】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 18uec++多人游戏【服务器为两个角色发枪,并能在线开枪】

    打开主角类,生成枪的代码逻辑在游戏开始函数里 所以在生成之前,我们需要判断该对象是否在服务器端(服务器端视角) 编译一下,看看是什么效果 我们发现,左边的有武器,右边的没有武器  所以我们要让武器可以进行网络复制 打开武器类,在构造函数中进行设置 编

    2023年04月09日
    浏览(14)
  • 【UE4】多人联机教程(重点笔记)

    1. 创建房间、搜索房间功能 2. 根据指定IP和端口加入游戏 1. 新建一个第三人称角色模板工程 2. 创建一个空白关卡,这里命名为“InitMap” 3. 新建一个控件蓝图,这里命名为“UMG_ConnectMenu” 在关卡蓝图中显示该控件蓝图 打开“UMG_ConnectMenu”,添加如下控件 首先添加创建房间按

    2024年02月14日
    浏览(12)
  • Steam多人联机游戏unturned(未转变者)超级简单教程,作者亲自联机游玩

            unturned在往年可是一群人挤在一起玩,当然我也不是说这个游戏已经过时了,今天咱们开始unturned的联机教程,我也是熬了一夜才整明白。 此次联机教程适用于个人服游玩(几个小伙伴一起游玩一下,当然没问题),分为两种 一,局域网联机:开服成功后,基本上

    2024年02月05日
    浏览(48)
  • unity使用PhotonEngine实现多人联机游戏开发(一)

    先来了解一下PhotonEngine(光子引擎),这是德国ExitGame公司开发的网络引擎,photonengine简单易上手,很多游戏公司开发的网络游戏都是使用的这个。这个网络引擎里面包括了PhotonCloud(光子云)、photonServer(光子服务器)、PhotonQuantum(确定性量子引擎)、PhotonVoice(光子语音)

    2024年02月07日
    浏览(19)
  • 幻兽帕鲁自建游戏服务器供多人联机教程

    最近缝合怪游戏《幻兽帕鲁(Palworld)》Steam在线峰值破百万,成为Steam史上同时在线玩家数最多的付费游戏。服务器于1月21日再次出现宕机情况,很多玩家选择自建游戏服务器。本文将详细教学幻兽帕鲁自建游戏服务器,轻松搭建属于自己的Palworld服务器。 实测最低配置需

    2024年01月22日
    浏览(21)
  • Unity之NetCode多人网络游戏联机对战教程(1)

    官网链接:https://docs-multiplayer.unity3d.com/netcode/current/about/ Netcode for GameObjects(NGO)是专为Unity构建的高级网络库。它能够在网络会话中将 GameObject 和 世界数据 同时发送给多名玩家。使用NGO不必关心低级协议和网络框架。 打开一个unity项目,在菜单栏中选择 Window Package Manager

    2024年02月07日
    浏览(19)
  • UE5 UDP通信 UE4.21-UE5.1

    目录 客户端,发送数据 1.建立字符串变量UDPConnection,绑定连接事件  2.连接初始化  3.发送数据  4.关闭UDP服务  服务器,接收数据 1.绑定连接事件  2.绑定数据接收事件  3.开启UDP服务  4.返回数据  5.关闭UDP服务   需要提供远程端IP地址和端口号 0.0.0.0表示监听所有ip,端口

    2024年02月15日
    浏览(12)
  • Unity之NetCode多人网络游戏联机对战教程(4)--连接申请ConnectionApproval

    没看过前面的教程请先阅读前面的教程,本期将会讲到Netcode联机的申请,当一个Client想连接进来,应向Server发送申请联机的信息,然后由服务端向客户端下发数据,所有数据应该在服务端,而不是在客户端。 举几个常见的例子需要用到 ConnectionApproval 的场景 使用密码加入房

    2024年02月03日
    浏览(21)
  • 《UE5_C++多人TPS完整教程》学习笔记8 ——《P9 访问 Steam(Acessing Steam)》

    本文为B站系列教学视频 《UE5_C++多人TPS完整教程》 —— 《P9 访问 Steam(Acessing Steam)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C++ Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者)为 游戏引擎能吃么。 本节课将接着上节课 《P8 为项目配置 Steam(Confi

    2024年02月19日
    浏览(14)
  • 《UE5_C++多人TPS完整教程》学习笔记15 ——《P16 会话接口委托(Session Interface Delegates)》

    本文为B站系列教学视频 《UE5_C++多人TPS完整教程》 —— 《P16 会话接口委托(Session Interface Delegates)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C++ Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者)为 游戏引擎能吃么。 本节课我们将向新创建的子系统添

    2024年02月20日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包