# LockedTargetSelector
# 说明
LockedTargetSelector命名空间提供了锁定目标选择器功能,允许玩家锁定一个特定目标并保持锁定,直到目标被解锁或不再有效。这在团战或连招中非常有用,可以确保技能和攻击集中在同一个目标上。
# 如何使用
#include "Noble.h"
void OnGameUpdate()
{
// 获取800范围内的锁定目标(如果已锁定)
AIBaseClient* target = LockedTargetSelector::GetTarget(800, eDamageType::Physical);
if (target)
{
// 有锁定的目标,使用技能攻击
if (ObjectManager::Player()->GetSpell(eSpellSlot::Q)->IsReady())
{
// 使用Q技能攻击锁定的目标
ObjectManager::Player()->GetSpell(eSpellSlot::Q)->CastOnUnit(target);
}
}
else
{
// 没有锁定目标,可以使用普通目标选择器获取目标
target = TargetSelector::GetTarget(800, eDamageType::Physical);
if (target)
{
// 找到了目标,可以考虑锁定它(通过其他方式或功能)
Console::Add("找到了目标: %s", target->ChampionName());
}
}
}
# GetTarget
AIBaseClient* LockedTargetSelector::GetTarget(float range, eDamageType damageType, bool ignoreShieldSpells = true, bool TargetBoundingRadius = false, std::vector<AIBaseClient*>const& ignoredChamps = {}, Vector rangeCheckFrom = Vector::Zero)
获取当前锁定的目标,如果目标无效或超出范围则返回nullptr。
参数名字 | 参数类型 | 描述 |
---|---|---|
range | float | 检查范围 |
damageType | eDamageType | 伤害类型(物理、魔法或真实伤害) |
ignoreShieldSpells | bool | 是否忽略护盾技能 |
TargetBoundingRadius | bool | 是否考虑目标的边界半径 |
ignoredChamps | std::vector<AIBaseClient*>const& | 要忽略的英雄列表 |
rangeCheckFrom | Vector | 范围检查的起始位置,默认为玩家位置 |
// 获取物理伤害类型的锁定目标,考虑900单位范围
AIBaseClient* lockedTarget = LockedTargetSelector::GetTarget(900, eDamageType::Physical);
if (lockedTarget)
{
Console::Add("当前锁定目标: %s, 血量: %.1f",
lockedTarget->ChampionName(),
lockedTarget->Health());
}
else
{
Console::Add("没有锁定的目标或目标超出范围");
}
# UnlockTarget
void LockedTargetSelector::UnlockTarget()
解锁当前锁定的目标,允许再次使用常规目标选择。
// 解锁当前目标
LockedTargetSelector::UnlockTarget();
Console::Add("已解锁目标");
← HealthPrediction Math →