Es/Hitscan: Difference between revisions
< Es
Jump to navigation
Jump to search
mNo edit summary |
m (- changed links to :lang suffix redirect pages to the redirected link) |
||
Line 3: | Line 3: | ||
<small>''Para un artículo más técnico sobre este tema, véase [[UTIL_TraceLine:es|TraceLines]].''</small> | <small>''Para un artículo más técnico sobre este tema, véase [[UTIL_TraceLine:es|TraceLines]].''</small> | ||
[[Half-Life 2 | [[Half-Life 2|Half-Life 2]] tiene diversas armas de este tipo (que realmente no lanzan proyectiles, sino que trazan líneas y generan daño al final de su trayecto). El usuario [[User:XenoTrout|XenoTrout]] tomó el código de <code>CBaseEntity::[[FireBullets()]]</code> para crear <code>CBaseEntity::HitScan()</code> e introdujo el código en <code>baseentity_shared.ccp</code>. | ||
<source lang=cpp> | <source lang=cpp> |
Revision as of 12:35, 4 July 2024
Para un artículo más técnico sobre este tema, véase TraceLines.
Half-Life 2 tiene diversas armas de este tipo (que realmente no lanzan proyectiles, sino que trazan líneas y generan daño al final de su trayecto). El usuario XenoTrout tomó el código de CBaseEntity::FireBullets()
para crear CBaseEntity::HitScan()
e introdujo el código en baseentity_shared.ccp
.
Vector CBaseEntity::HitScan( const FireBulletsInfo_t &info, unsigned int mask )
{
trace_t tr;
CTraceFilterSkipTwoEntities traceFilter( this, info.m_pAdditionalIgnoreEnt, COLLISION_GROUP_NONE );
Vector vecEnd = info.m_vecSrc + info.m_vecDirShooting * info.m_flDistance;
AI_TraceLine(info.m_vecSrc, vecEnd, mask, &traceFilter, &tr);
return tr.endpos;
}
y la definición en BaseEntity.h
.
virtual Vector HitScan( const FireBulletsInfo_t &info, unsigned int mask );
Esta función puede adaptarse a otras definiciones de distintos formatos. Simplemente genera FireBulletsInfo_t en la estructura dada.