UE4控制台通过TraceTag画出trace的调试线

这篇博客介绍了在Unreal Engine中如何利用TraceTag进行游戏调试,特别是针对shootergame示例,展示了如何打开并画出AIWeaponLosTrace的调试线,以便于理解Bot到人的Trace路径和命中点的法线。代码示例显示了如何在World.h和World.cpp文件中控制TraceTag的开关和设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用法,按~键调出控制台,按如下输入

 

TraceTagAll 打开并画出全部trace的调试线

TraceTag [TagName] 打开并画出标签名为TagName的调试线

在官方shootergame示例中:输入TraceTag AIWeaponLosTrace。下面是Bot到人的Trace,可以看到除了Trace线段画出来了,命中点处还画出了红色法线。

源码如下

//World.h
#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
	/** When non-'None', all line traces where the TraceTag match this will be drawn */
	FName    DebugDrawTraceTag;

	/** When set to true, all scene queries will be drawn */
	bool bDebugDrawAllTraceTags;

	bool DebugDrawSceneQueries(const FName& UsedTraceTag) const
	{
		return (bDebugDrawAllTraceTags || ((DebugDrawTraceTag != NAME_None) && (DebugDrawTraceTag == UsedTraceTag))) && IsInGameThread();
	}
#endif

//World.cpp
bool UWorld::Exec( UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar )
{
#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
	if( FParse::Command( &Cmd, TEXT("TRACETAG") ) )
	{
		return HandleTraceTagCommand( Cmd, Ar );
	}
	else if( FParse::Command( &Cmd, TEXT("TRACETAGALL")))
	{
		bDebugDrawAllTraceTags = !bDebugDrawAllTraceTags;
		return true;
	}
	else
#endif


bool UWorld::HandleTraceTagCommand( const TCHAR* Cmd, FOutputDevice& Ar )
{
#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
	FString TagStr;
	FParse::Token(Cmd, TagStr, 0);
	DebugDrawTraceTag = FName(*TagStr);
#endif
	return true;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值