Unreal Engine 4 C++ 射线碰撞

游戏开发中经常会用到射线碰撞,比如激光器打一枪,需要明确知道它集中的位置,然后在这个点释放攻击特效。

Unrea Engine 4中做射线碰撞也很简单,主要功能的实现是World的LineTraceSingle这个方法,下面给出测试代码。代码我在ThirdPersonTemplate中测试。检测角色正前方有无柯碰撞的Actor,有就在碰撞点上显示一个调试用的圆球。代码如下:

void ANanProjectCharacter::Raycast()
{
	FHitResult hitResult(ForceInit);
	FVector pos, dir;
	FCollisionQueryParams ccq(FName(TEXT("CombatTrace")), true, NULL);
	ccq.bTraceComplex = true;
	ccq.bTraceAsyncScene = false;
	ccq.bReturnPhysicalMaterial = false;
	ccq.AddIgnoredActor(this);

	pos = GetActorLocation();

	const FRotator Rotation = CapsuleComponent->GetComponentRotation();
	const FRotator YawRotation(0, Rotation.Yaw, 0);

	// get forward vector
	dir = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);

	FVector posBegin = pos;
	FVector posEnd = pos + dir * 500;

	GetWorld()->LineTraceSingle(hitResult,
		posBegin,
		posEnd,
		ECC_WorldStatic,
		ccq);

	DrawDebugLine(this->GetWorld(), posBegin, posEnd, FColor(1.0f, 0.f, 0.f, 1.f), false, 20.f);
	if (hitResult.GetActor())
	{
		DrawDebugSphere(GetWorld(), hitResult.Location, 10, 10, FColor::Red, false, 20.f);

	}
}

注意下,需要把角色自己从碰撞检测中排除掉。最终效果如下:

时间: 2024-11-05 17:33:25

Unreal Engine 4 C++ 射线碰撞的相关文章

Unreal Engine 4 创建Destructible Mesh(可破坏网格)

Unreal Engine 4的物理引擎用的是PhysX.支持网格破坏.布料,物理粒子等,很强大.以前需要编码才能完成的工作,在Unreal Engine 4 中只需要拖拖拽拽就完成了,很方便. 这次演示做一个可破坏的网格.先上效果: 我做了个圆锥,让它从天落下,然后破碎掉. 下面说下具体制作的步骤: 新建一个项目,向场景添加一个Cone Brush(圆锥). 调整Cone Brush的属性,设置Sides(边数)为20,这样看起来平滑一些.在属性栏Brush Settings的最下面点击按钮C

UNREAL ENGINE 4.12 正式发布!下载地址

UNREAL ENGINE 4.12 正式发布! 下载地址:https://www.unrealengine.com/ Alexander Paschall 在 June 1, 2016 |功能新闻社区 Share on Facebook Share on Twitter Share on Google+ Share on LinkedIn 此版本内含虚幻引擎 4 的数百个更新,以及 GitHub 虚幻引擎开发者社区提交的 106 项改良!特此对虚幻引擎 4.12 版本的贡献者们表达诚挚谢意:

《精通Unreal Engine 3 卷1:3D游戏关卡设计》

内容简介: <精通Unreal Engine 3卷1:3D游戏关卡设计基础篇>是您认识并掌握最新最热门的游戏引擎(虚幻引擎3)的首选指南,无论您是初次接触mod制作的爱好者,还是职业的关卡设计人员,都能从本书中受益.本书中包含了读者想要学习的所有技能,这些技能可以帮助读者创建出在游戏机和复读机上运行的极其出色的新内容和游戏. <精通UnrealEngine3卷1:3D游戏关卡设计基础篇>的作者不仅仅是世界上最优秀的虚幻引擎游戏开发培训人员,他们甚至已经发布了<虚幻竞技场3:典

Unreal Engine 4 C++ PlatformerGame自定义角色控制器源代码分析

Unreal Engine 4 C++ PlatformerGame自定义角色控制器源代码分析 官方商店里有个PlatformerGame整个免费的游戏,是一个卷轴类的跑酷游戏.整个项目的角色控制器很有意思,可以跑.跳.滑行,很酷.这里来分析下它具体是如何实现的. UCharacterMovementComponent这个类实现了角色控制器的大部分功能,PlatformerGame实现了一个自定义的MovmentComponent,叫UPlatformerPlayerMovementComp,它

Unreal Engine 4 动态切割模型实现

Unreal Engine 4 动态切割模型实现 <合金装备:复仇>里面,有一个很有趣的设定,游戏里大部分的场景和物件都可以用主角的刀动态切割. UE4中的ProceduralMeshComponent这个组件可以很容易的就实现这种功能,下面介绍下实现的方法. 准备模型 首先我们准备一个模型. 我做了一个简单的圆柱体,用来测试.注意需要切割的地方,为了保证细节,多放点顶点. 为了能够动态切割,我们要勾选这个模型的Allow CPUAccess选项. 新建蓝图 新建一个Actor蓝图,为它添加两

游戏音频技术备忘 (四) Wwise Unreal Engine 集成代码浅析 (一)

在Engine\Plugins\Wwise\Source下为主要Wwise相关代码,AkAudio文件夹下为运行时相关代码,AudiokineticTools下为编辑器工具相关代码,AudiokineticTools.Build.cs为用于UnrealBuildTool的相应代码,与音频直接相关位于 AkAudio文件夹下. Unreal Engine提供若干宏来实现GC.序列化.网络等需求,譬如声明为UPROPERTY()的变量与UFUNCTION()的函数即可由引擎实现变量复制和远端调用 ,

游戏音频技术备忘 (三) 集成Wwise到Unreal Engine

当前受众较广的商业游戏引擎有 Unreal Engine.Unity.cocos2d-x等,在音频领域的第三方中间件则有Wwise.FMOD.Criware等,言多且烦,我们首先集成Wwise到 Unreal Engine 中去. 在https://github.com/EpicGames/UnrealEngine上可以抓取到Unreal Engine的源代码,前提条件是需要有一个 organization 加入EpicGames 的github账号,这就需要在https://www.unrea

Unreal Engine 4 RenderTarget制作Live Camera效果

Unreal Engine 4 RenderTarget制作Live Camera效果 先上效果: Live Camera我不知道怎么翻译.反正意思就是将一个摄影机的Image渲染到一个2D平面上. 以下介绍下详细的实现方法: 1.创建一个Scene Capture 2D对象 将这个对象拖动到合适的地方. 2.创建RendterTarget对象 材质&贴图->渲染目标 3.设置SceneCapture2D的对象的属性 将SceneCapture:Texture Target设置成上面创建的渲

从Unreal Engine 3到Unreal Engine 4

Unreal Engine 4发布好长好长时间了,直到最近才有时间仔细去看一下. TimSweeney老大一句话"IF YOU LOVE SOMETHING, SET IT FREE",原来需要几十万授权金才能拿到的东西,就从$19,变成免费了,而且开源.作为一个国际顶尖的引擎,能走出这一步,对我等普通开发者真是福音啊.如此的牛X,再加上开源,相信Unreal Engine 4会火起来的,你看看最近E3上的产品展示也能感觉到.不过,Unreal的定位毕竟是"国际顶尖"