UE5 斯坦福C++ 上课记录
文章平均质量分 76
以斯坦福C++教学视频为核心的上课记录专栏
烟水寻常
如果我的笔记对你有帮助,那真是太好了
欢迎留言交流
展开
-
UE5.1保姆级创建第三方插件库使用DLL,以及踩坑笔记
if(FPlatformProcess::GetDllExport(mode->ExampleLibraryHandle, *procName) == nullptr) { UE_LOG(LogTemp,Error,TEXT("加载 GetDllExport 失败"));这里我们使用UE5官方的方式,将我们的DLL创建在插件目录下面。原创 2023-02-07 16:08:41 · 7349 阅读 · 10 评论 -
11月24日 让AI不会一直出现,给AI添加血量,死亡,和布娃娃碰撞,自定义静态函数
")) return;} } void ASAICharacter::OnHealthChanged(AActor* InstigatorActor, USAttributeComponent* OwningComp, float NewHealth,float Delta) { if(Delta原创 2022-11-29 12:15:37 · 254 阅读 · 0 评论 -
11月26日 创建敌人血量UMG,游戏分数和游戏时间UMG,人物开始位置与不同的游戏模式,控制台功能治愈 ,杀死AI
/杀死所有机器人 void ASGameModeBase::KillAllBot() { //循环所有机器人 for (TActorIterator It(GetWorld());if (ensure(AttributeComp) && AttributeComp->IsALive()) { //执行KillAllBot AttributeComp->KillAllBot(this);//杀死所有机器人 UFUNCTION(Exec) void KillAllBot();原创 2022-11-29 12:13:09 · 462 阅读 · 0 评论 -
11月22日 EQS优化,让AI知道什么地方不能走,自定义游戏模式,让AI在玩家旁边生成,难度提升,随着时间增多的AI
void ASGameModeBase::StartPlay() { //继承Base的StartPlay Super::StartPlay();//判断数组内是否有第一个值 if(Locations.IsValidIndex(0)) { //生成Bot GetWorld()->SpawnActor(MinionClass,Locations[0],FRotator::ZeroRotator);查找资料后发现要手动引用。原创 2022-11-23 16:11:36 · 938 阅读 · 0 评论 -
11月20日 作业3 生命药剂,角色蓝图修改
具体太麻烦了,我直接贴代码了SPowerUp_Actor.h// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "SGameplayInterface.h" #include "Components/SphereComponent.h" #include "GameFramework/Actor.h" #inc原创 2022-11-21 22:45:46 · 268 阅读 · 0 评论 -
11月20日 创建自己的环境任务,使用Pawn环境检测来检测周围的环境,让AI动作更顺滑(动画混合空
/ Fill out your copyright notice in the Description page of Project Settings. //这是AI控制器 #include "AI/SAIController.h" #include "BehaviorTree/BlackboardComponent.h" #include "Kismet/GameplayStatics.h" void ASAIController::BeginPlay() { Super::BeginPlay();原创 2022-11-21 22:42:16 · 249 阅读 · 0 评论 -
11月20日 如何在场景开启Debug,自定义AI任务,EQS,创建自己的环境任务,使用Pawn环境检测来检测周围的环境,让AI动作更顺滑(动画混合
if(ensure(MyController)) { //从AI控制器获取到AI的Pawn APawn* AIPawn = MyController->GetPawn();if(ensure(AIPawn)) { //计算角色的位置和AI的位置 float DistanceTo = FVector::Distance(TargetActor->GetActorLocation() , AIPawn->GetActorLocation());按数字键3打开EQSDEBUG。按'打开Debug数据栏。原创 2022-11-21 22:39:48 · 577 阅读 · 0 评论 -
11月18日 虚幻争霸小兵缺少动画蓝图,让AI动起来与射击,无法解析的外部符号
if(ensure(MyController)) { //从AI控制器获取到AI的Pawn APawn* AIPawn = MyController->GetPawn();if(ensure(AIPawn)) { //计算角色的位置和AI的位置 float DistanceTo = FVector::Distance(TargetActor->GetActorLocation() , AIPawn->GetActorLocation());这一段判断为ture,ai逻辑树到Move To.原创 2022-11-18 17:52:25 · 780 阅读 · 0 评论 -
VRchat改模型相关
然后在父物体的Colliders添加子物体骨骼,修改上面的Transfroms内Multi Child Type成First,然后再修改Forces即可。子物体添加VRC Phys Bone Collider。父物体添加VRC Phys Bone。原创 2022-11-16 17:33:09 · 443 阅读 · 0 评论 -
11月16日 给游戏添加声音,给角色添加死亡动画,创建物体的血量UI UE4斯坦福 学习笔记入声音
void ASCharacter::OnHealthChanged(AActor* InstigatorActor, USAttributeComponent* OwningComp, float NewHealth, float Delta) { //当血量少于0的时候清除控制器的输入 if(NewHealth < 0.0f && Delta原创 2022-11-16 17:32:38 · 467 阅读 · 0 评论 -
11月15日 作业2,黑洞子弹,子弹发射位置朝着准星方向 UE4斯坦福 学习笔记
/新的射击 void ASCharacter::SpawnProjectile(TSubclassOf ClassToSpawn) { if(ensure(ProjectileClass)) { //触发函数的时候从手部位置生成一个魔法球的模型 FVector HandLocation = GetMesh()->GetSocketLocation("Muzzle_01");在.cpp内添加功能。原创 2022-11-16 17:30:39 · 319 阅读 · 0 评论 -
11月15日 修改子弹碰撞检测,材质基础,创建蓝图可以控制的材质,创建溶解材质,自定义材质函数,修改用户界面血条 UE4斯坦福 学习笔记
在Time后面添加一个乘0.1的节点是为了能更方便的查看Time的变化。修改魔法子弹的碰撞逻辑,让自己发射出去的子弹可以不会攻击到自己。开始讲的都是材质最基础的知识,我从第二个例子开始记笔记。添加后重新编译,创建蓝图类调用并加上前面创建的材质即可。创建蓝图可以控制的材质。原创 2022-11-16 17:29:23 · 246 阅读 · 0 评论 -
11月11日 自定义Events,将自定义Events分配给UI,给UI添加动画 UE4斯坦福 学习笔记
在开始游戏的时候获得Pawn,将Pawn转换为我们的SCharacter类,获得Attribute组件,将组件转换为Bind Event,添加为我们创建的事件,获得Progress Bar组件和我们的Attribute组件,获取组件下的默认Health变量,将NewHealth除以Health变量,最后设置百分比。在Attibute组件的蓝图右侧新增加了一个FOnHealthChanged的事件,并且在执行ApplyHealthChange的时候启用。在时间轴内添加一个0.5秒先变大后回复原状的动画。原创 2022-11-11 11:38:26 · 253 阅读 · 0 评论 -
11月10日 生命值,减少生命值,创建生命值UI UE4斯坦福 学习笔记
/将创建的AttributeComp绑定在角色上 AttributeComp = CreateDefaultSubobject("AttributeComp");在.h内添加生命值与减少血量的函数。原创 2022-11-10 21:52:19 · 214 阅读 · 1 评论 -
11月9日 DEBUG,调试CPP UE4斯坦福 学习笔记
void ASExplosiveBarrels::OnActorHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp,FVector NormalImpulse, const FHitResult& Hit) { //LOG UE_LOG(LogTemp,Log,TEXT("LogTemp这是一个LOG"));请一定要在编辑器内重载UE4,而不要使用UE4的热编译。在炸弹桶的.cpp内添加。原创 2022-11-09 21:02:28 · 233 阅读 · 0 评论 -
11月6日 作业 爆炸桶与跳跃 Unreal Engine Rider 学习笔记
/添加碰撞 StaticMeshComp->SetSimulatePhysics(true);//新建函数 UFUNCTION() void OnActorHit(UPrimitiveComponent* HitComp,AActor* OtherActor,UPrimitiveComponent* OtherComp,FVector NormalImpulse,const FHitResult& Hit);原创 2022-11-09 15:38:28 · 264 阅读 · 0 评论 -
11月8日 改良射线,蓝图 UE4斯坦福 学习笔记
/输出调试信息 if(HitActor->Implements()) { GEngine->AddOnScreenDebugMessage(-1, 1.f, FColor::Green, FString::Printf(TEXT("Implements")));} } //Debug射线的发射 DrawDebugSphere(GetWorld(),Hit.ImpactPoint,Radius,32,LineColor,false,2.0f);原创 2022-11-09 15:35:51 · 201 阅读 · 0 评论 -
Unreal Engine Rider 学习笔记一 创建角色与转向 11月4日
/CameraComp为SpringArmComp的子物体 CameraComp = CreateDefaultSubobject("CameraComp");最后在项目设置里添加与BindAxis("MoveForward",this,&ASCharacter::MoveForward);声明这个变量在.cpp类内的用处,CameraComp=创建组件(组件在编辑器中的name名字)在.h内添加一个void MoveForward,在.cpp内添加BinAxis。原创 2022-11-05 09:42:20 · 421 阅读 · 0 评论 -
Unreal Engine Rider 学习笔记二 旋转,魔法攻击 11月5日
代码部分具体可看Unreal Engine Rider 代码使用记录。这里使用的是虚幻商城官方的Gideon。进入Magic.h,在保护项内创建组件。在Input内新建一个Action层。最终效果:角色跟随鼠标选择而旋转。在MoveForward内添加。创建一个类,名字为SMagic。在角色内暴露一个actor类。修改SCharacter。添加一个角色与动画蓝图。并且在.cpp内添加。在.cpp内添加功能。原创 2022-11-07 08:18:37 · 209 阅读 · 0 评论 -
11月6日 Unreal Engine Rider 代码使用记录
如果您希望您的角色根据按住跳跃键的时间进行跳跃,那么您可以将 JumpMaxHoldTime 设置为某个非零值。IE_Pressed 表示的是按下的时候,IE_Released 表示的是松开的时候。在这种情况下,请确保在您希望停止应用跳跃的 z 速度时(例如在按钮向上事件中)指下面这个void 是一个可以被蓝图调用的函数。11月6日代码使用记录(作业1)让角色在下一次更新时跳跃。在BeginPlay前执行。与其他物体重叠时执行。原创 2022-11-07 08:23:47 · 191 阅读 · 0 评论 -
11月7日 Unreal Engine Rider 学习笔记
/输出调试信息 if(HitActor->Implements()) { GEngine->AddOnScreenDebugMessage(-1, 1.f, FColor::Green, FString::Printf(TEXT("Implements")));在角色类内添加接口与ActorComp。在.cpp内添加射线功能。原创 2022-11-07 22:56:53 · 268 阅读 · 0 评论