# MissileClient

# 说明

MissileClient类用于获取和管理游戏中投射物的相关属性,例如技能槽位、起始位置、目标位置、技能数据、目标对象和施法者等信息。

# 如何使用

// 遍历所有投射物
for (auto missile : ObjectManager::GetAllMissile())
{
    if (missile->IsValid() && missile->IsEnemy())
    {
        // 获取投射物的施法者
        AIBaseClient* caster = missile->SpellCaster();
        if (caster && caster->IsValid() && caster->IsAIHero())
        {
            // 获取投射物的技能数据
            SpellData* spellData = missile->SData();
            if (spellData)
            {
                Console::Add("检测到敌方英雄 %s 的投射物: %s", caster->ChampionName(), spellData->Name());
            }
        }
    }
}

# Slot

eSpellSlot Slot()

获取投射物对应的技能槽位。

eSpellSlot slot = missile->Slot();
if (slot == eSpellSlot::Q)
{
    Console::Add("检测到Q技能投射物");
}

# StartPosition

Vector const& StartPosition()

获取投射物的起始位置。

Vector startPos = missile->StartPosition();
Console::Add("投射物起始位置: %.1f, %.1f, %.1f", startPos.x, startPos.y, startPos.z);

# EndPosition

Vector const& EndPosition()

获取投射物的目标位置。

Vector endPos = missile->EndPosition();
// 计算投射物飞行距离
float distance = startPos.Distance(endPos);
Console::Add("投射物飞行距离: %.1f", distance);

# EndPosition2

Vector const& EndPosition2()

获取投射物的第二目标位置(某些特殊技能使用)。

Vector endPos2 = missile->EndPosition2();

# SData

SpellData* SData()

获取投射物的技能数据。

SpellData* spellData = missile->SData();
if (spellData)
{
    Console::Add("投射物名称: %s", spellData->Name());
    Console::Add("投射物速度: %.1f", spellData->MissileSpeed());
}

# Target

AIBaseClient* Target()

获取投射物的目标对象。

AIBaseClient* target = missile->Target();
if (target && target->IsValid() && target->IsMe())
{
    Console::Add("检测到指向自己的投射物!");
}

# SpellCaster

AIBaseClient* SpellCaster()

获取投射物的施法者。

AIBaseClient* caster = missile->SpellCaster();
if (caster && caster->IsValid() && caster->IsAIHero())
{
    Console::Add("施法者: %s", caster->ChampionName());
}