03UEc++【打飞艇:导弹与飞艇的碰撞事件】
1.同理导入导弹和大陆(都不导入骨骼)
2.点击大陆的网格体设置碰撞
3.然后把大地拖入游戏场景
========================
1.创建导弹类Missle和敌人类Enemy,都继承于actor类
2.为 Missle添加一个静态网格体组件和运动组件
UPROPERTY(VisibleAnywhere)UStaticMeshComponent* Mesh;UPROPERTY(VisibleAnywhere)class UProjectileMovementComponent * MovementComponent;
3.在源文件中引入头文件
#include "Components/StaticMeshComponent.h"
#include "GameFramework/ProjectileMovementComponent.h"
4.在构造函数中初始化
//创建静态网格体Mesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh"));//静态网格体设为根组件RootComponent = Mesh;//创建移动组件MovementComponent = CreateDefaultSubobject<UProjectileMovementComponent>(TEXT("MovementComponent"));//设置初始速度MovementComponent->InitialSpeed = 500.0f;
5.在头文件中声明一个函数,用来作为重叠事件
//OverlappedComponent:自身的重叠组件 OtherActor:重叠的对方 OtherComp:对方的组件UFUNCTION()void OverlapHanler(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult);
6.此时我们想增加一个逻辑,打中一个飞艇就加分,首先我们在gamemode里面,添加分数
UCLASS()
class TUTDRONE_API ATutDroneGameModeBase : public AGameModeBase
{GENERATED_BODY()
public://本次游戏得分UPROPERTY()int32 num;};
7.在源文件中进行定义
void AMissle::OverlapHanler(UPrimitiveComponent * OverlappedComponent, AActor * OtherActor, UPrimitiveComponent * OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult)
{//首先判断,碰撞到的物体是否继承于AEnemy类if (OtherActor->IsA<AEnemy>()){//该物体销毁OtherActor->Destroy();//加分ATutDroneGameModeBase * gm = Cast<ATutDroneGameModeBase>(GetWorld()->GetAuthGameMode());if (gm != nullptr){gm->num++;}//自身也要炸掉this->Destroy();}
}
8.在构造函数中将改函数绑定到重叠开始事件
//启动overlap事件Mesh->SetGenerateOverlapEvents(true);//设置重叠开始事件Mesh->OnComponentBeginOverlap.AddDynamic(this,&AMissle::OverlapHanler)
============================
1.为 Enemy添加一个静态网格体组件并在源文件中创建,步骤同上
2.在头文件中,声明一个函数,作为销毁时的事件
UFUNCTION()void DestroyHandler(AActor * DestroyedActor);
3.在源文件中进行定义(未完)
4.在构造函数中激活重叠事件并绑定销毁事件
//启动overlap事件Mesh->SetGenerateOverlapEvents(true);this->OnDestroyed.AddDynamic(this, &AEnemy::DestroyHandler);
================
1.创建对应的蓝图
2.把两个mesh的碰撞预设都设为这个
3.给胡萝卜模型添加一个胶囊体碰撞
4.给飞艇自动生成一个碰撞
在这里设置相关参数
测试
当重叠事件发生时,打印
UKismetSystemLibrary::PrintString(this, TEXT("BANGBANGBANG"));
敌人消失并打印出改字符串
========================
导入音频
1.创建音频的cue
2.为声音添加一个衰减,随着距离衰减
3.为飞艇添加粒子特效和声音
//爆炸特效UPROPERTY(EditAnywhere)class UPartycleSystem * Explosion;//爆炸声音UPROPERTY(EditAnywhere)class USoundBase * ExplosionSound;
4.在源文件中引入相关文件
#include "Kismet/GamePlayStatics.h"
5.在销毁事件函数中生成特效和声音
void AEnemy::DestroyHandler(AActor * DestroyedActor)
{UGameplayStatics::SpawnEmitterAtLocation(GetWorld(), Explosion, this->GetTransform());UGameplayStatics::PlaySoundAtLocation(this, ExplosionSound, this->GetActorLocation(),2.0f);
}
6.在胡萝卜头文件里,添加一个声音
//发射声音UPROPERTY(EditAnywhere)class USoundBase * FireSound;
7.在源文件的构造函数中发出声音
// Called when the game starts or when spawned
void AMissle::BeginPlay()
{Super::BeginPlay();UGameplayStatics::PlaySoundAtLocation(this, FireSound, this->GetActorLocation(), 2.0f);
}
8.在蓝图中选择声音
测试:
除了没有爆炸特效,其他都正常。
03UEc++【打飞艇:导弹与飞艇的碰撞事件】相关推荐
- 16.刚体碰撞事件监测与处理
1)当一个用刚体控制的物体与另外一个物体碰撞时,就会触发碰撞事件 注:目标物体必须带有 Collider 组件. 2)碰撞事件监测方法 1.OnCollisionEnter(Collision) 当碰 ...
- CreatorPrimer | 物理小游戏(碰撞事件监听)
继续物理小游戏,我们先回顾一下CreatorPrimer仓库中提供的五个组件脚本: 使用这5个组件脚本,可以构建非常有趣的物理小游戏,下面我们对这5个自定义组件做一个简单介绍: PhysicsMana ...
- Unity 碰撞事件 触发事件
Unity 碰撞事件 触发事件 碰撞和被碰撞的物体都需要加有 Collider 碰撞组件 两个物体至少有一个带有刚体 触发器需要在Collider组件中勾选Trigger属性 1.触发器事件 //触发 ...
- BEPUphysicsint碰撞事件详解
上一节我们給大家介绍了BEPUphysicsint的基本使用,在游戏开发中我们经常要使用物理引擎的事件,所以本节我们详细的讲解BEPUphysicsint 的物理事件.此物理引擎会产生了碰撞事件与非碰 ...
- laya air 碰撞事件 和 重力设置
1.有1方需要在unity中加上 RigidBody 3D,才能触发: 2.boxCollider如果太薄,物体厚度不够,会直接穿过 3.1.做地面的物体 (1) 只add boxCollider ...
- html的碰撞事件,js实现碰撞检测
这篇文章主要为大家详细介绍了js实现碰撞检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了js实现碰撞检测的具体代码,供大家参考,具体内容如下 代 ...
- 韩国公司KT将飞艇无人机与5G网络结合,用于搜救幸存者
内容来源:ATYUN AI平台 韩国电信公司KT公布了其5G应急网络服务Skyship,将该服务结合飞艇无人机在灾难发生后搜寻幸存者. KT与当地的无人机制造商Metismake合作设计了氦气飞艇,该 ...
- 《无人机DIY》——2.5 无线电控制飞艇
本节书摘来异步社区<无人机DIY>一书中的第2章,第2.5节,作者:[美]John Baichtal(约翰 贝克托),更多章节内容可以访问云栖社区"异步社区"公众号查看 ...
- 2021年全球与中国飞艇行业市场规模现状及企业市场份额分析
2021年全球与中国飞艇行业市场规模现状及企业市场份额分析 本报告研究全球与中国市场飞艇的发展现状及未来发展趋势,分别从生产和消费的角度分析飞艇的主要生产地区.主要消费地区以及主要的生产商.重点分析全 ...
最新文章
- 皮一皮:如此父母...究竟是好还是不好(沉思)...
- 解密回声消除技术之一(理论篇)
- matplotlib中plot的颜色
- UML建模——用例图(Use Case Diagram)
- 2020-10-27(汇编收获)
- 基于MaxCompute SQL 的半结构化数据处理实践
- 【Flink】Flink No JAAS configuration section named Client ERROR:Authentication failed
- Arthas : 在线分析诊断工具Arthas(阿尔萨斯)
- [Python学习25] 关于函数更多的练习
- 【机器学习系列】变分推断第一讲:Variational Inference背景和用途
- matlab神经网络工具箱使用教程
- 基于 SaaS 的 RADIUS 认证在无线网络准入中的应用和优化
- 内存条 udimm rdimm 等和 ECC 功能
- 主成分分析;主成分回归分析——Hald水泥问题;主成分分析案例——各地区普通高等教育发展水平综合评价;matlab
- 在SQL server中设置时间格式
- Hadoop(二)Hive原理解析
- infoQ推荐算法综述笔记
- Three.js 地理坐标和三维空间坐标的转换
- 深入浅出MySQL JSON数据类型
- 无线控制服务器是什么,什么是LED路灯无线物联网系统