mirror of
https://github.com/litruv/Docs-Viewer.git
synced 2026-07-24 02:36:07 +10:00
800 lines
34 KiB
HTML
800 lines
34 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
|
||
<head>
|
||
<title>Blueprint Penetration Trace Documentation</title>
|
||
<base href="https://lit.ruv.wtf/docs/">
|
||
<meta id="root-path" root-path="https://lit.ruv.wtf/docs/">
|
||
<meta name="viewport"
|
||
content="width=device-width, initial-scale=1.0, user-scalable=yes, minimum-scale=1.0, maximum-scale=5.0">
|
||
<meta charset="UTF-8">
|
||
<meta name="description" content="lit.ruv.wtf - Docs - Blueprint Penetration Trace Documentation">
|
||
<meta property="og:title" content="Blueprint Penetration Trace Documentation">
|
||
<meta property="og:description" content="lit.ruv.wtf - Docs - Blueprint Penetration Trace Documentation">
|
||
<meta property="og:type" content="website">
|
||
<meta property="og:url" content="https://lit.ruv.wtf/docs/blueprint-penetration-trace.html">
|
||
<meta property="og:image" content="https://lit.ruv.wtf/docs/images/depthtracebychannel.png">
|
||
<meta property="og:site_name" content="lit.ruv.wtf - Docs">
|
||
<meta name="author" content="Litruv">
|
||
<link rel="alternate" type="application/rss+xml" title="RSS Feed" href="https://lit.ruv.wtf/docs/lib/rss.xml">
|
||
<script async="" id="webpage-script" src="https://lit.ruv.wtf/docs/lib/scripts/webpage.js"
|
||
onload='this.onload=null;this.setAttribute("loaded", "true")'></script>
|
||
<script async="" id="minisearch-script" src="https://cdn.jsdelivr.net/npm/minisearch@6.3.0/dist/umd/index.min.js"
|
||
onload="this.onload=null;this.setAttribute('loaded', 'true')"></script>
|
||
<link rel="icon" href="https://lit.ruv.wtf/docs/lib/media/favicon.png">
|
||
<style>
|
||
body {
|
||
--line-width: 40em;
|
||
--line-width-adaptive: 40em;
|
||
--file-line-width: 40em;
|
||
--sidebar-width: min(20em, 80vw);
|
||
--collapse-arrow-size: 11px;
|
||
--tree-horizontal-spacing: 0.6em;
|
||
--tree-vertical-spacing: 0.6em;
|
||
--sidebar-margin: 12px
|
||
}
|
||
|
||
.sidebar {
|
||
height: 100%;
|
||
min-width: calc(var(--sidebar-width) + var(--divider-width-hover));
|
||
max-width: calc(var(--sidebar-width) + var(--divider-width-hover));
|
||
font-size: 14px;
|
||
z-index: 10;
|
||
position: relative;
|
||
overflow: hidden;
|
||
transition: min-width ease-in-out, max-width ease-in-out;
|
||
transition-duration: .2s;
|
||
contain: size
|
||
}
|
||
|
||
.sidebar-left {
|
||
left: 0
|
||
}
|
||
|
||
.sidebar-right {
|
||
right: 0
|
||
}
|
||
|
||
.sidebar.is-collapsed {
|
||
min-width: 0;
|
||
max-width: 0
|
||
}
|
||
|
||
body.floating-sidebars .sidebar {
|
||
position: absolute
|
||
}
|
||
|
||
.sidebar-content {
|
||
height: 100%;
|
||
min-width: calc(var(--sidebar-width) - var(--divider-width-hover));
|
||
top: 0;
|
||
padding: var(--sidebar-margin);
|
||
padding-top: 4em;
|
||
line-height: var(--line-height-tight);
|
||
background-color: var(--background-secondary);
|
||
transition: background-color, border-right, border-left, box-shadow;
|
||
transition-duration: var(--color-fade-speed);
|
||
transition-timing-function: ease-in-out;
|
||
position: absolute;
|
||
display: flex;
|
||
flex-direction: column
|
||
}
|
||
|
||
.sidebar:not(.is-collapsed) .sidebar-content {
|
||
min-width: calc(max(100%, var(--sidebar-width)) - 3px);
|
||
max-width: calc(max(100%, var(--sidebar-width)) - 3px)
|
||
}
|
||
|
||
.sidebar-left .sidebar-content {
|
||
left: 0;
|
||
border-top-right-radius: var(--radius-l);
|
||
border-bottom-right-radius: var(--radius-l)
|
||
}
|
||
|
||
.sidebar-right .sidebar-content {
|
||
right: 0;
|
||
border-top-left-radius: var(--radius-l);
|
||
border-bottom-left-radius: var(--radius-l)
|
||
}
|
||
|
||
.sidebar:has(.sidebar-content:empty):has(.topbar-content:empty) {
|
||
display: none
|
||
}
|
||
|
||
.sidebar-topbar {
|
||
height: 2em;
|
||
width: var(--sidebar-width);
|
||
top: var(--sidebar-margin);
|
||
padding-inline: var(--sidebar-margin);
|
||
z-index: 1;
|
||
position: fixed;
|
||
display: flex;
|
||
align-items: center;
|
||
transition: width ease-in-out;
|
||
transition-duration: inherit
|
||
}
|
||
|
||
.sidebar.is-collapsed .sidebar-topbar {
|
||
width: calc(2.3em + var(--sidebar-margin) * 2)
|
||
}
|
||
|
||
.sidebar .sidebar-topbar.is-collapsed {
|
||
width: 0
|
||
}
|
||
|
||
.sidebar-left .sidebar-topbar {
|
||
left: 0
|
||
}
|
||
|
||
.sidebar-right .sidebar-topbar {
|
||
right: 0
|
||
}
|
||
|
||
.topbar-content {
|
||
overflow: hidden;
|
||
overflow: clip;
|
||
width: 100%;
|
||
height: 100%;
|
||
display: flex;
|
||
align-items: center;
|
||
transition: inherit
|
||
}
|
||
|
||
.sidebar.is-collapsed .topbar-content {
|
||
width: 0;
|
||
transition: inherit
|
||
}
|
||
|
||
.clickable-icon.sidebar-collapse-icon {
|
||
background-color: transparent;
|
||
color: var(--icon-color-focused);
|
||
padding: 0 !important;
|
||
margin: 0 !important;
|
||
height: 100% !important;
|
||
width: 2.3em !important;
|
||
margin-inline: 0.14em !important;
|
||
position: absolute
|
||
}
|
||
|
||
.sidebar-left .clickable-icon.sidebar-collapse-icon {
|
||
transform: rotateY(180deg);
|
||
right: var(--sidebar-margin)
|
||
}
|
||
|
||
.sidebar-right .clickable-icon.sidebar-collapse-icon {
|
||
transform: rotateY(180deg);
|
||
left: var(--sidebar-margin)
|
||
}
|
||
|
||
.clickable-icon.sidebar-collapse-icon svg.svg-icon {
|
||
width: 100%;
|
||
height: 100%
|
||
}
|
||
|
||
.sidebar-section-header {
|
||
margin: 0 0 1em 0;
|
||
text-transform: uppercase;
|
||
letter-spacing: .06em;
|
||
font-weight: 600
|
||
}
|
||
|
||
body {
|
||
transition: background-color var(--color-fade-speed) ease-in-out
|
||
}
|
||
|
||
.webpage-container {
|
||
display: flex;
|
||
flex-direction: row;
|
||
height: 100%;
|
||
width: 100%;
|
||
align-items: stretch;
|
||
justify-content: center
|
||
}
|
||
|
||
.document-container {
|
||
opacity: 1;
|
||
flex-basis: 100%;
|
||
max-width: 100%;
|
||
width: 100%;
|
||
height: 100%;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
transition: opacity .2s ease-in-out;
|
||
contain: inline-size
|
||
}
|
||
|
||
.hide {
|
||
opacity: 0;
|
||
transition: opacity .2s ease-in-out
|
||
}
|
||
|
||
.document-container>.markdown-preview-view {
|
||
margin: var(--sidebar-margin);
|
||
margin-bottom: 0;
|
||
width: 100%;
|
||
width: -webkit-fill-available;
|
||
width: -moz-available;
|
||
width: fill-available;
|
||
background-color: var(--background-primary);
|
||
transition: background-color var(--color-fade-speed) ease-in-out;
|
||
border-top-right-radius: var(--window-radius, var(--radius-m));
|
||
border-top-left-radius: var(--window-radius, var(--radius-m));
|
||
overflow-x: hidden !important;
|
||
overflow-y: auto !important;
|
||
display: flex !important;
|
||
flex-direction: column !important;
|
||
align-items: center !important;
|
||
contain: inline-size
|
||
}
|
||
|
||
.document-container>.markdown-preview-view>.markdown-preview-sizer {
|
||
padding-bottom: 80vh !important;
|
||
width: 100% !important;
|
||
max-width: var(--line-width) !important;
|
||
flex-basis: var(--line-width) !important;
|
||
transition: background-color var(--color-fade-speed) ease-in-out;
|
||
contain: inline-size
|
||
}
|
||
|
||
.markdown-rendered img:not([width]),
|
||
.view-content img:not([width]) {
|
||
max-width: 100%;
|
||
outline: 0
|
||
}
|
||
|
||
.document-container>.view-content.embed {
|
||
display: flex;
|
||
padding: 1em;
|
||
height: 100%;
|
||
width: 100%;
|
||
align-items: center;
|
||
justify-content: center
|
||
}
|
||
|
||
.document-container>.view-content.embed>* {
|
||
max-width: 100%;
|
||
max-height: 100%;
|
||
object-fit: contain
|
||
}
|
||
|
||
:has(> :is(.math, table)) {
|
||
overflow-x: auto !important
|
||
}
|
||
|
||
.document-container>.view-content {
|
||
overflow-x: auto;
|
||
contain: content;
|
||
padding: 0;
|
||
margin: 0;
|
||
height: 100%
|
||
}
|
||
|
||
.scroll-highlight {
|
||
position: absolute;
|
||
width: 100%;
|
||
height: 100%;
|
||
pointer-events: none;
|
||
z-index: 1000;
|
||
background-color: hsla(var(--color-accent-hsl), .25);
|
||
opacity: 0;
|
||
padding: 1em;
|
||
inset: 50%;
|
||
translate: -50% -50%;
|
||
border-radius: var(--radius-s)
|
||
}
|
||
</style>
|
||
<script
|
||
defer="">async function loadIncludes() { if ("file:" != location.protocol) { let e = document.querySelectorAll("include"); for (let t = 0; t < e.length; t++) { let o = e[t], l = o.getAttribute("src"); try { const e = await fetch(l); if (!e.ok) { console.log("Could not include file: " + l), o?.remove(); continue } let t = await e.text(), n = document.createRange().createContextualFragment(t), i = Array.from(n.children); for (let e of i) e.classList.add("hide"), e.style.transition = "opacity 0.5s ease-in-out", setTimeout((() => { e.classList.remove("hide") }), 10); o.before(n), o.remove(), console.log("Included file: " + l) } catch (e) { o?.remove(), console.log("Could not include file: " + l, e); continue } } } else { if (document.querySelectorAll("include").length > 0) { var e = document.createElement("div"); e.id = "error", e.textContent = "Web server exports must be hosted on an http / web server to be viewed correctly.", e.style.position = "fixed", e.style.top = "50%", e.style.left = "50%", e.style.transform = "translate(-50%, -50%)", e.style.fontSize = "1.5em", e.style.fontWeight = "bold", e.style.textAlign = "center", document.body.appendChild(e), document.querySelector(".document-container")?.classList.remove("hide") } } } document.addEventListener("DOMContentLoaded", (() => { loadIncludes() })); let isFileProtocol = "file:" == location.protocol; function waitLoadScripts(e, t) { let o = e.map((e => document.getElementById(e + "-script"))), l = 0; !function e() { let n = o[l]; l++, n && "true" != n.getAttribute("loaded") || l < o.length && e(), l < o.length ? n.addEventListener("load", e) : t() }() }</script>
|
||
<link rel="stylesheet" href="lib/styles/obsidian.css">
|
||
<link rel="preload" href="lib/styles/global-variable-styles.css" as="style"
|
||
onload="this.onload=null;this.rel='stylesheet'"><noscript>
|
||
<link rel="stylesheet" href="lib/styles/global-variable-styles.css">
|
||
</noscript>
|
||
<link rel="preload" href="lib/styles/main-styles.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
||
<noscript>
|
||
<link rel="stylesheet" href="lib/styles/main-styles.css">
|
||
</noscript>
|
||
<link rel="preload" href="lib/styles/snippets.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
||
<noscript>
|
||
<link rel="stylesheet" href="lib/styles/snippets.css">
|
||
</noscript>
|
||
</head>
|
||
|
||
<body class="publish css-settings-manager theme-dark show-inline-title show-ribbon">
|
||
<script
|
||
defer="">let theme = localStorage.getItem("theme") || (window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"); "dark" == theme ? (document.body.classList.add("theme-dark"), document.body.classList.remove("theme-light")) : (document.body.classList.add("theme-light"), document.body.classList.remove("theme-dark")), window.innerWidth < 480 ? document.body.classList.add("is-phone") : window.innerWidth < 768 ? document.body.classList.add("is-tablet") : window.innerWidth < 1024 ? document.body.classList.add("is-small-screen") : document.body.classList.add("is-large-screen")</script>
|
||
<div class="webpage-container workspace">
|
||
<div class="sidebar-left sidebar">
|
||
<div class="sidebar-topbar">
|
||
<div class="topbar-content"></div>
|
||
<div class="clickable-icon sidebar-collapse-icon"><svg xmlns="http://www.w3.org/2000/svg" width="100%"
|
||
height="100%" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"
|
||
stroke-linecap="round" stroke-linejoin="round" class="svg-icon">
|
||
<path
|
||
d="M21 3H3C1.89543 3 1 3.89543 1 5V19C1 20.1046 1.89543 21 3 21H21C22.1046 21 23 20.1046 23 19V5C23 3.89543 22.1046 3 21 3Z">
|
||
</path>
|
||
<path d="M10 4V20"></path>
|
||
<path d="M4 7H7"></path>
|
||
<path d="M4 10H7"></path>
|
||
<path d="M4 13H7"></path>
|
||
</svg></div>
|
||
</div>
|
||
<div class="sidebar-content">
|
||
<div class="search-input-container"><input enterkeyhint="search" type="search" spellcheck="false"
|
||
placeholder="Search...">
|
||
<div class="search-input-clear-button" aria-label="Clear search"></div>
|
||
</div>
|
||
<include src="lib/html/file-tree.html"></include>
|
||
</div>
|
||
<script
|
||
defer="">let ls = document.querySelector(".sidebar-left"); ls.classList.add("is-collapsed"); if (window.innerWidth > 768) ls.classList.remove("is-collapsed"); ls.style.setProperty("--sidebar-width", localStorage.getItem("sidebar-left-width"));</script>
|
||
</div>
|
||
<div class="document-container markdown-reading-view hide">
|
||
<div class="markdown-preview-view markdown-rendered is-readable-line-width">
|
||
<style id="MJX-CHTML-styles"></style>
|
||
<pre class="frontmatter language-yaml" tabindex="0"
|
||
style="display: none;"><code class="language-yaml is-loaded"><span class="token key atrule">title</span><span class="token punctuation">:</span> Blueprint Penetration Trace Documentation</code><button class="copy-code-button"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-copy"><rect x="8" y="8" width="14" height="14" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg></button></pre>
|
||
<div class="markdown-preview-sizer markdown-preview-section">
|
||
<h1 class="page-title heading inline-title" id="Blueprint Penetration Trace Documentation">Blueprint
|
||
Penetration Trace Documentation</h1>
|
||
<div class="el-p">
|
||
<p dir="auto">This is a <code>Blueprint Function Library</code> with a few functions that are
|
||
callable in <code>AActors</code> to do depth trace results, for use in things like
|
||
projectiles and tools.</p>
|
||
</div>
|
||
<div class="el-p">
|
||
<p dir="auto"><span alt="TraceExample.mp4" src="TraceExample.mp4"
|
||
class="internal-embed media-embed video-embed is-loaded"><video controls=""
|
||
preload="metadata" src="images/traceexample.mp4" style=""></video></span></p>
|
||
</div>
|
||
<div class="el-h2 heading-wrapper">
|
||
<h2 data-heading="Features" dir="auto" class="heading" id="Features">
|
||
<div class="heading-collapse-indicator collapse-indicator collapse-icon"><svg
|
||
xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
|
||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
stroke-linejoin="round" class="svg-icon right-triangle">
|
||
<path d="M3 8L12 17L21 8"></path>
|
||
</svg></div>Features
|
||
</h2>
|
||
<div class="heading-children">
|
||
<div class="el-ul">
|
||
<ul>
|
||
<li data-line="0" dir="auto">Depth-based trace</li>
|
||
<li data-line="1" dir="auto">Forward and backward trace results for bullet holes
|
||
</li>
|
||
<li data-line="2" dir="auto">Simple to implement into existing systems</li>
|
||
<li data-line="3" dir="auto">Easy debug options</li>
|
||
</ul>
|
||
</div>
|
||
<div class="el-hr">
|
||
<hr>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="el-h2 heading-wrapper">
|
||
<h2 data-heading="How it works" dir="auto" class="heading" id="How_it_works">
|
||
<div class="heading-collapse-indicator collapse-indicator collapse-icon"><svg
|
||
xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
|
||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
stroke-linejoin="round" class="svg-icon right-triangle">
|
||
<path d="M3 8L12 17L21 8"></path>
|
||
</svg></div>How it works
|
||
</h2>
|
||
<div class="heading-children">
|
||
<div class="el-p">
|
||
<p dir="auto">This node works by simulating depth using two line traces—one forward and
|
||
one backward from the point of impact. These traces scan for objects in their paths
|
||
and gather information about the hit results. The distance travelled through each
|
||
material is multiplied by its density (defined in the material's physical
|
||
properties), which determines how much the projectile is slowed down or whether it
|
||
stops entirely. Finally, the node returns a list of hit results, including the total
|
||
depth.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="el-h2 heading-wrapper">
|
||
<h2 data-heading="Variants" dir="auto" class="heading" id="Variants">
|
||
<div class="heading-collapse-indicator collapse-indicator collapse-icon"><svg
|
||
xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
|
||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
stroke-linejoin="round" class="svg-icon right-triangle">
|
||
<path d="M3 8L12 17L21 8"></path>
|
||
</svg></div>Variants
|
||
</h2>
|
||
<div class="heading-children">
|
||
<div class="el-p">
|
||
<p dir="auto">Depth Trace by Channel<br>
|
||
<span alt="DepthTraceByChannel.png" src="DepthTraceByChannel.png"
|
||
class="internal-embed media-embed image-embed is-loaded"><img
|
||
alt="DepthTraceByChannel.png"
|
||
src="images/depthtracebychannel.png"></span><br>
|
||
Depth Trace for Objects<br>
|
||
<span alt="DepthTraceForObjects.png" src="DepthTraceForObjects.png"
|
||
class="internal-embed media-embed image-embed is-loaded"><img
|
||
alt="DepthTraceForObjects.png"
|
||
src="images/depthtraceforobjects.png"></span><br>
|
||
Depth Trace by Profile<br>
|
||
<span alt="DepthTraceByProfile.png" src="DepthTraceByProfile.png"
|
||
class="internal-embed media-embed image-embed is-loaded"><img
|
||
alt="DepthTraceByProfile.png" src="images/depthtracebyprofile.png"></span>
|
||
</p>
|
||
</div>
|
||
<div class="el-h3 heading-wrapper">
|
||
<h3 data-heading="Input" dir="auto" class="heading" id="Input">
|
||
<div class="heading-collapse-indicator collapse-indicator collapse-icon"><svg
|
||
xmlns="http://www.w3.org/2000/svg" width="24" height="24"
|
||
viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||
stroke-linecap="round" stroke-linejoin="round"
|
||
class="svg-icon right-triangle">
|
||
<path d="M3 8L12 17L21 8"></path>
|
||
</svg></div>Input
|
||
</h3>
|
||
<div class="heading-children">
|
||
<div class="el-table" dir="ltr" style="overflow-x: auto;">
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th dir="ltr"><strong>Member</strong></th>
|
||
<th dir="ltr"><strong>Definition</strong></th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td dir="ltr"><strong>Start</strong></td>
|
||
<td dir="ltr">Start of the Trace</td>
|
||
</tr>
|
||
<tr>
|
||
<td dir="ltr"><strong>End</strong></td>
|
||
<td dir="ltr">End of the Trace</td>
|
||
</tr>
|
||
<tr>
|
||
<td dir="ltr"><strong>Trace Complex</strong></td>
|
||
<td dir="ltr">If the trace will use <a data-tooltip-position="top"
|
||
aria-label="https://dev.epicgames.com/documentation/en-us/unreal-engine/simple-versus-complex-collision-in-unreal-engine"
|
||
rel="noopener nofollow" class="external-link"
|
||
href="https://dev.epicgames.com/documentation/en-us/unreal-engine/simple-versus-complex-collision-in-unreal-engine"
|
||
target="_blank">Complex Collision</a></td>
|
||
</tr>
|
||
<tr>
|
||
<td dir="ltr"><strong>Actors To Ignore</strong></td>
|
||
<td dir="ltr">Array of Actors, to ignore while tracing</td>
|
||
</tr>
|
||
<tr>
|
||
<td dir="ltr"><strong>Draw Debug Type</strong></td>
|
||
<td dir="ltr">Draw Debug Arrows over Time, or Persistently</td>
|
||
</tr>
|
||
<tr>
|
||
<td dir="ltr"><strong>Ignore Self</strong></td>
|
||
<td dir="ltr">If the traces should ignore the Current actor (Self)
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td dir="ltr"><strong>Trace Color</strong></td>
|
||
<td dir="ltr">The color of the trace, when it's not going through
|
||
anything.</td>
|
||
</tr>
|
||
<tr>
|
||
<td dir="ltr"><strong>Trace Hit Color</strong></td>
|
||
<td dir="ltr">The color of the trace, when it's going through
|
||
something.</td>
|
||
</tr>
|
||
<tr>
|
||
<td dir="ltr"><strong>Draw Time</strong></td>
|
||
<td dir="ltr">Amount of time to draw debug lines (if not persistent)
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td dir="ltr"><strong>Max Depth</strong></td>
|
||
<td dir="ltr">Maximum depth for the trace to go</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="el-h2 heading-wrapper">
|
||
<h2 data-heading="Implementing into existing systems" dir="auto" class="heading"
|
||
id="Implementing_into_existing_systems">
|
||
<div class="heading-collapse-indicator collapse-indicator collapse-icon"><svg
|
||
xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
|
||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
stroke-linejoin="round" class="svg-icon right-triangle">
|
||
<path d="M3 8L12 17L21 8"></path>
|
||
</svg></div>Implementing into existing systems
|
||
</h2>
|
||
<div class="heading-children">
|
||
<div class="el-p">
|
||
<p dir="auto">This can be seamlessly integrated with existing systems with minimal
|
||
changes to your current blueprint setup.</p>
|
||
</div>
|
||
<div class="el-p">
|
||
<p dir="auto">By simply replacing your current line trace nodes with the Depth Trace
|
||
node, you’ll get the added benefit of depth effects.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="el-h2 heading-wrapper">
|
||
<h2 data-heading="Adding Trace Collision Channel (optional)" dir="auto" class="heading"
|
||
id="Adding_Trace_Collision_Channel_(optional)">
|
||
<div class="heading-collapse-indicator collapse-indicator collapse-icon"><svg
|
||
xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
|
||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
stroke-linejoin="round" class="svg-icon right-triangle">
|
||
<path d="M3 8L12 17L21 8"></path>
|
||
</svg></div>Adding Trace Collision Channel (optional)
|
||
</h2>
|
||
<div class="heading-children">
|
||
<div class="el-p">
|
||
<p dir="auto">While adding a custom collision channel is optional, it can be a bit more
|
||
time-consuming and may cause other systems in your project to break if not set up
|
||
correctly. By default, your existing channels might not be set to overlap, so
|
||
setting up a new custom trace channel helps ensure compatibility.</p>
|
||
</div>
|
||
<div class="el-p">
|
||
<p dir="auto">To set up a custom trace channel in Unreal Engine, follow these steps:</p>
|
||
</div>
|
||
<div class="el-ol">
|
||
<ol>
|
||
<li data-line="0" dir="auto">Go to <strong>Project Settings → Engine →
|
||
Collision</strong>.</li>
|
||
<li data-line="1" dir="auto">In the <strong>Collision Channels</strong> section,
|
||
click <strong>Add New</strong>.</li>
|
||
<li data-line="2" dir="auto">
|
||
<div class="list-collapse-indicator collapse-indicator collapse-icon"><svg
|
||
xmlns="http://www.w3.org/2000/svg" width="24" height="24"
|
||
viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||
stroke-linecap="round" stroke-linejoin="round"
|
||
class="svg-icon right-triangle">
|
||
<path d="M3 8L12 17L21 8"></path>
|
||
</svg></div>Set the following properties for the new channel:
|
||
<ul>
|
||
<li data-line="3" dir="auto"><strong>Name</strong>: <code>Projectile</code>
|
||
(or a name of your choice)</li>
|
||
<li data-line="4" dir="auto"><strong>Default Response</strong>:
|
||
<code>Overlap</code></li>
|
||
</ul>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
<div class="el-p">
|
||
<p dir="auto">For more detailed instructions on adding a custom object type to your
|
||
project, you can refer to the <a data-tooltip-position="top"
|
||
aria-label="https://dev.epicgames.com/documentation/en-us/unreal-engine/add-a-custom-object-type-to-your-project-in-unreal-engine"
|
||
rel="noopener nofollow" class="external-link"
|
||
href="https://dev.epicgames.com/documentation/en-us/unreal-engine/add-a-custom-object-type-to-your-project-in-unreal-engine"
|
||
target="_blank">Unreal Engine Wiki on Custom Object Types</a>.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="el-h2 heading-wrapper">
|
||
<h2 data-heading="Physical materials (optional)" dir="auto" class="heading"
|
||
id="Physical_materials_(optional)">
|
||
<div class="heading-collapse-indicator collapse-indicator collapse-icon"><svg
|
||
xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
|
||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
stroke-linejoin="round" class="svg-icon right-triangle">
|
||
<path d="M3 8L12 17L21 8"></path>
|
||
</svg></div>Physical materials (optional)
|
||
</h2>
|
||
<div class="heading-children">
|
||
<div class="el-p">
|
||
<p dir="auto">Default <a data-tooltip-position="top"
|
||
aria-label="https://dev.epicgames.com/documentation/en-us/unreal-engine/physical-materials-user-guide-for-unreal-engine"
|
||
rel="noopener nofollow" class="external-link"
|
||
href="https://dev.epicgames.com/documentation/en-us/unreal-engine/physical-materials-user-guide-for-unreal-engine"
|
||
target="_blank">Physical Material</a> properties are at <strong>1 g/cm</strong>,
|
||
but adding more physical properties into your game can add extra depth. </p>
|
||
</div>
|
||
<div class="el-h3 heading-wrapper">
|
||
<h3 data-heading="Example Material Densities" dir="auto" class="heading"
|
||
id="Example_Material_Densities">
|
||
<div class="heading-collapse-indicator collapse-indicator collapse-icon"><svg
|
||
xmlns="http://www.w3.org/2000/svg" width="24" height="24"
|
||
viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||
stroke-linecap="round" stroke-linejoin="round"
|
||
class="svg-icon right-triangle">
|
||
<path d="M3 8L12 17L21 8"></path>
|
||
</svg></div>Example Material Densities
|
||
</h3>
|
||
<div class="heading-children">
|
||
<div class="el-table" dir="ltr" style="overflow-x: auto;">
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th dir="ltr">Material</th>
|
||
<th dir="ltr">Density (g/cm³)</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td dir="ltr">Styrofoam</td>
|
||
<td dir="auto">0.1</td>
|
||
</tr>
|
||
<tr>
|
||
<td dir="ltr">Pine Wood</td>
|
||
<td dir="auto">0.5</td>
|
||
</tr>
|
||
<tr>
|
||
<td dir="ltr">Water</td>
|
||
<td dir="auto">0.5</td>
|
||
</tr>
|
||
<tr>
|
||
<td dir="ltr">Glass</td>
|
||
<td dir="auto">1</td>
|
||
</tr>
|
||
<tr>
|
||
<td dir="ltr">Concrete</td>
|
||
<td dir="auto">2.4</td>
|
||
</tr>
|
||
<tr>
|
||
<td dir="ltr">Aluminum</td>
|
||
<td dir="auto">2.7</td>
|
||
</tr>
|
||
<tr>
|
||
<td dir="ltr">Iron/Steel</td>
|
||
<td dir="auto">7.8</td>
|
||
</tr>
|
||
<tr>
|
||
<td dir="ltr">Copper</td>
|
||
<td dir="auto">8.9</td>
|
||
</tr>
|
||
<tr>
|
||
<td dir="ltr">Lead</td>
|
||
<td dir="auto">11.3</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div class="el-hr">
|
||
<hr>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="el-h2 heading-wrapper">
|
||
<h2 data-heading="Acknowledgements" dir="auto" class="heading" id="Acknowledgements">
|
||
<div class="heading-collapse-indicator collapse-indicator collapse-icon"><svg
|
||
xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
|
||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
stroke-linejoin="round" class="svg-icon right-triangle">
|
||
<path d="M3 8L12 17L21 8"></path>
|
||
</svg></div>Acknowledgements
|
||
</h2>
|
||
<div class="heading-children">
|
||
<div class="el-ul">
|
||
<ul>
|
||
<li data-line="0" dir="auto"><a data-tooltip-position="top"
|
||
aria-label="https://opengameart.org/users/loafbrr1" rel="noopener nofollow"
|
||
class="external-link" href="https://opengameart.org/users/loafbrr1"
|
||
target="_blank">loafbrr_1</a> for the pistol model</li>
|
||
<li data-line="1" dir="auto"><a data-tooltip-position="top"
|
||
aria-label="https://commons.wikimedia.org/wiki/File:B1_full_size_1500_target.jpg"
|
||
rel="noopener nofollow" class="external-link"
|
||
href="https://commons.wikimedia.org/wiki/File:B1_full_size_1500_target.jpg"
|
||
target="_blank">Neil Francis</a> for the target image</li>
|
||
</ul>
|
||
</div>
|
||
<div class="mod-footer mod-ui"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sidebar-right sidebar">
|
||
<div class="sidebar-topbar">
|
||
<div class="topbar-content"></div>
|
||
<div class="clickable-icon sidebar-collapse-icon"><svg xmlns="http://www.w3.org/2000/svg" width="100%"
|
||
height="100%" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"
|
||
stroke-linecap="round" stroke-linejoin="round" class="svg-icon">
|
||
<path
|
||
d="M21 3H3C1.89543 3 1 3.89543 1 5V19C1 20.1046 1.89543 21 3 21H21C22.1046 21 23 20.1046 23 19V5C23 3.89543 22.1046 3 21 3Z">
|
||
</path>
|
||
<path d="M10 4V20"></path>
|
||
<path d="M4 7H7"></path>
|
||
<path d="M4 10H7"></path>
|
||
<path d="M4 13H7"></path>
|
||
</svg></div>
|
||
</div>
|
||
<div class="sidebar-content">
|
||
<div class="tree-container mod-root nav-folder tree-item outline-tree" data-depth="0">
|
||
<div class="tree-header"><span class="sidebar-section-header">Table Of Contents</span><button
|
||
class="clickable-icon collapse-tree-button" aria-label="Collapse All"><svg
|
||
xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
|
||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
stroke-linejoin="round"></svg></button></div>
|
||
<div class="tree-scroll-area tree-item-children nav-folder-children">
|
||
<div class="tree-item mod-tree-folder nav-folder mod-collapsible is-collapsed"
|
||
style="display: none;"></div>
|
||
<div class="tree-item" data-depth="1"><a class="tree-link"
|
||
href="blueprint-penetration-trace.html#Blueprint Penetration Trace Documentation">
|
||
<div class="tree-item-contents heading-link"
|
||
heading-name="Blueprint Penetration Trace Documentation"><span
|
||
class="tree-item-title">Blueprint Penetration Trace Documentation</span></div>
|
||
</a>
|
||
<div class="tree-item-children nav-folder-children">
|
||
<div class="tree-item" data-depth="2"><a class="tree-link"
|
||
href="blueprint-penetration-trace.html#Features">
|
||
<div class="tree-item-contents heading-link" heading-name="Features"><span
|
||
class="tree-item-title">Features</span></div>
|
||
</a>
|
||
<div class="tree-item-children nav-folder-children"></div>
|
||
</div>
|
||
<div class="tree-item" data-depth="2"><a class="tree-link"
|
||
href="blueprint-penetration-trace.html#How_it_works">
|
||
<div class="tree-item-contents heading-link" heading-name="How it works"><span
|
||
class="tree-item-title">How it works</span></div>
|
||
</a>
|
||
<div class="tree-item-children nav-folder-children"></div>
|
||
</div>
|
||
<div class="tree-item" data-depth="2"><a class="tree-link"
|
||
href="blueprint-penetration-trace.html#Variants">
|
||
<div class="tree-item-contents heading-link" heading-name="Variants"><span
|
||
class="tree-item-title">Variants</span></div>
|
||
</a>
|
||
<div class="tree-item-children nav-folder-children">
|
||
<div class="tree-item" data-depth="3"><a class="tree-link"
|
||
href="blueprint-penetration-trace.html#Input">
|
||
<div class="tree-item-contents heading-link" heading-name="Input"><span
|
||
class="tree-item-title">Input</span></div>
|
||
</a>
|
||
<div class="tree-item-children nav-folder-children"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="tree-item" data-depth="2"><a class="tree-link"
|
||
href="blueprint-penetration-trace.html#Implementing_into_existing_systems">
|
||
<div class="tree-item-contents heading-link"
|
||
heading-name="Implementing into existing systems"><span
|
||
class="tree-item-title">Implementing into existing systems</span></div>
|
||
</a>
|
||
<div class="tree-item-children nav-folder-children"></div>
|
||
</div>
|
||
<div class="tree-item" data-depth="2"><a class="tree-link"
|
||
href="blueprint-penetration-trace.html#Adding_Trace_Collision_Channel_(optional)">
|
||
<div class="tree-item-contents heading-link"
|
||
heading-name="Adding Trace Collision Channel (optional)"><span
|
||
class="tree-item-title">Adding Trace Collision Channel (optional)</span>
|
||
</div>
|
||
</a>
|
||
<div class="tree-item-children nav-folder-children"></div>
|
||
</div>
|
||
<div class="tree-item" data-depth="2"><a class="tree-link"
|
||
href="blueprint-penetration-trace.html#Physical_materials_(optional)">
|
||
<div class="tree-item-contents heading-link"
|
||
heading-name="Physical materials (optional)"><span
|
||
class="tree-item-title">Physical materials (optional)</span></div>
|
||
</a>
|
||
<div class="tree-item-children nav-folder-children">
|
||
<div class="tree-item" data-depth="3"><a class="tree-link"
|
||
href="blueprint-penetration-trace.html#Example_Material_Densities">
|
||
<div class="tree-item-contents heading-link"
|
||
heading-name="Example Material Densities"><span
|
||
class="tree-item-title">Example Material Densities</span></div>
|
||
</a>
|
||
<div class="tree-item-children nav-folder-children"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="tree-item" data-depth="2"><a class="tree-link"
|
||
href="blueprint-penetration-trace.html#Acknowledgements">
|
||
<div class="tree-item-contents heading-link" heading-name="Acknowledgements">
|
||
<span class="tree-item-title">Acknowledgements</span></div>
|
||
</a>
|
||
<div class="tree-item-children nav-folder-children"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<script
|
||
defer="">let rs = document.querySelector(".sidebar-right"); rs.classList.add("is-collapsed"); if (window.innerWidth > 768) rs.classList.remove("is-collapsed"); rs.style.setProperty("--sidebar-width", localStorage.getItem("sidebar-right-width"));</script>
|
||
</div>
|
||
</div>
|
||
</body>
|
||
|
||
</html> |