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++【打飞艇:导弹与飞艇的碰撞事件】相关推荐

  1. 16.刚体碰撞事件监测与处理

    1)当一个用刚体控制的物体与另外一个物体碰撞时,就会触发碰撞事件 注:目标物体必须带有 Collider 组件. 2)碰撞事件监测方法 1.OnCollisionEnter(Collision) 当碰 ...

  2. CreatorPrimer | 物理小游戏(碰撞事件监听)

    继续物理小游戏,我们先回顾一下CreatorPrimer仓库中提供的五个组件脚本: 使用这5个组件脚本,可以构建非常有趣的物理小游戏,下面我们对这5个自定义组件做一个简单介绍: PhysicsMana ...

  3. Unity 碰撞事件 触发事件

    Unity 碰撞事件 触发事件 碰撞和被碰撞的物体都需要加有 Collider 碰撞组件 两个物体至少有一个带有刚体 触发器需要在Collider组件中勾选Trigger属性 1.触发器事件 //触发 ...

  4. BEPUphysicsint碰撞事件详解

    上一节我们給大家介绍了BEPUphysicsint的基本使用,在游戏开发中我们经常要使用物理引擎的事件,所以本节我们详细的讲解BEPUphysicsint 的物理事件.此物理引擎会产生了碰撞事件与非碰 ...

  5. laya air 碰撞事件 和 重力设置

    1.有1方需要在unity中加上 RigidBody 3D,才能触发: 2.boxCollider如果太薄,物体厚度不够,会直接穿过 3.1.做地面的物体 (1)  只add boxCollider ...

  6. html的碰撞事件,js实现碰撞检测

    这篇文章主要为大家详细介绍了js实现碰撞检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了js实现碰撞检测的具体代码,供大家参考,具体内容如下 代 ...

  7. 韩国公司KT将飞艇无人机与5G网络结合,用于搜救幸存者

    内容来源:ATYUN AI平台 韩国电信公司KT公布了其5G应急网络服务Skyship,将该服务结合飞艇无人机在灾难发生后搜寻幸存者. KT与当地的无人机制造商Metismake合作设计了氦气飞艇,该 ...

  8. 《无人机DIY》——2.5 无线电控制飞艇

    本节书摘来异步社区<无人机DIY>一书中的第2章,第2.5节,作者:[美]John Baichtal(约翰 贝克托),更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  9. 2021年全球与中国飞艇行业市场规模现状及企业市场份额分析

    2021年全球与中国飞艇行业市场规模现状及企业市场份额分析 本报告研究全球与中国市场飞艇的发展现状及未来发展趋势,分别从生产和消费的角度分析飞艇的主要生产地区.主要消费地区以及主要的生产商.重点分析全 ...

最新文章

  1. 皮一皮:如此父母...究竟是好还是不好(沉思)...
  2. 解密回声消除技术之一(理论篇)
  3. matplotlib中plot的颜色
  4. UML建模——用例图(Use Case Diagram)
  5. 2020-10-27(汇编收获)
  6. 基于MaxCompute SQL 的半结构化数据处理实践
  7. 【Flink】Flink No JAAS configuration section named Client ERROR:Authentication failed
  8. Arthas : 在线分析诊断工具Arthas(阿尔萨斯)
  9. [Python学习25] 关于函数更多的练习
  10. 【机器学习系列】变分推断第一讲:Variational Inference背景和用途
  11. matlab神经网络工具箱使用教程
  12. 基于 SaaS 的 RADIUS 认证在无线网络准入中的应用和优化
  13. 内存条 udimm rdimm 等和 ECC 功能
  14. 主成分分析;主成分回归分析——Hald水泥问题;主成分分析案例——各地区普通高等教育发展水平综合评价;matlab
  15. 在SQL server中设置时间格式
  16. Hadoop(二)Hive原理解析
  17. infoQ推荐算法综述笔记
  18. Three.js 地理坐标和三维空间坐标的转换
  19. 深入浅出MySQL JSON数据类型
  20. 无线控制服务器是什么,什么是LED路灯无线物联网系统

热门文章

  1. CSS 中font样式
  2. 领域驱动设计精粹感想
  3. 【原创】群晖 Synology DS920+ 如何设置链路聚合
  4. Optimized GameObject时到底发生了什么
  5. 树莓派python闹钟_使用树莓派和DS3231制作实时闹钟
  6. isp计算机英语翻译,计算机专业英语教程翻译(61页)-原创力文档
  7. 分析:以太坊的合并后经济学
  8. IPSec之IKEv1协议详解
  9. .NET5-统一平台(一统江湖)
  10. 2022-8-1----Android10.0(MTK)-----修改 ro 属性