# Prediction
# 说明
Prediction命名空间提供了技能预判功能,可以预测敌方英雄的位置,以便精准命中技能。
# 如何使用
// 基本预测用法
auto target = TargetSelector::GetTarget(1000.0f, eDamageType::Magical);
if (target) {
PredictionOutput pred = Prediction::GetPrediction(target, 0.25f, 80.0f, 1600.0f);
if (pred.Hitchance >= eHitChance::High) {
// 使用预测位置释放技能
Vector castPos = pred.CastPosition();
// 施放技能...
}
}
// 使用自定义预测输入
PredictionInput input;
input.Unit = target;
input.Delay = 0.25f;
input.Radius = 80.0f;
input.Speed = 1600.0f;
input.Type = eSkillshotType::SkillshotLine;
input.Collision = true;
input.CollisionObjects = { eCollisionableObjects::Minions, eCollisionableObjects::YasuoWall };
PredictionOutput pred = Prediction::GetPrediction(input);
# GetPrediction
PredictionOutput GetPrediction(AIBaseClient* unit, float delay)
获取目标的位置预测,只考虑延迟。
参数名 | 参数类型 | 描述 |
---|---|---|
unit | AIBaseClient* | 目标单位 |
delay | float | 技能释放延迟(秒) |
auto target = TargetSelector::GetTarget(1000.0f, eDamageType::Magical);
if (target) {
PredictionOutput pred = Prediction::GetPrediction(target, 0.25f);
if (pred.Hitchance >= eHitChance::High) {
// 使用预测位置释放技能
}
}
# GetPrediction
PredictionOutput GetPrediction(AIBaseClient* unit, float delay, float radius)
获取目标的位置预测,考虑延迟和技能半径。
参数名 | 参数类型 | 描述 |
---|---|---|
unit | AIBaseClient* | 目标单位 |
delay | float | 技能释放延迟(秒) |
radius | float | 技能半径 |
auto target = TargetSelector::GetTarget(1000.0f, eDamageType::Magical);
if (target) {
PredictionOutput pred = Prediction::GetPrediction(target, 0.25f, 80.0f);
if (pred.Hitchance >= eHitChance::High) {
// 使用预测位置释放技能
}
}
# GetPrediction
PredictionOutput GetPrediction(AIBaseClient* unit, float delay, float radius, float speed)
获取目标的位置预测,考虑延迟、技能半径和速度。
参数名 | 参数类型 | 描述 |
---|---|---|
unit | AIBaseClient* | 目标单位 |
delay | float | 技能释放延迟(秒) |
radius | float | 技能半径 |
speed | float | 技能飞行速度 |
auto target = TargetSelector::GetTarget(1000.0f, eDamageType::Magical);
if (target) {
PredictionOutput pred = Prediction::GetPrediction(target, 0.25f, 80.0f, 1600.0f);
if (pred.Hitchance >= eHitChance::High) {
// 使用预测位置释放技能
}
}
# GetPrediction
PredictionOutput GetPrediction(AIBaseClient* unit, float delay, float radius, float speed, std::vector<eCollisionableObjects> const& collisionable)
获取目标的位置预测,考虑延迟、技能半径、速度和碰撞检测。
参数名 | 参数类型 | 描述 |
---|---|---|
unit | AIBaseClient* | 目标单位 |
delay | float | 技能释放延迟(秒) |
radius | float | 技能半径 |
speed | float | 技能飞行速度 |
collisionable | std::vector | 碰撞检测对象 |
auto target = TargetSelector::GetTarget(1000.0f, eDamageType::Magical);
if (target) {
std::vector<eCollisionableObjects> collisionObjects = { eCollisionableObjects::Minions, eCollisionableObjects::YasuoWall };
PredictionOutput pred = Prediction::GetPrediction(target, 0.25f, 80.0f, 1600.0f, collisionObjects);
if (pred.Hitchance >= eHitChance::High && pred.CollisionObjects.empty()) {
// 使用预测位置释放技能,且没有碰撞
}
}
# GetPrediction
PredictionOutput GetPrediction(PredictionInput const& input)
使用自定义的PredictionInput获取目标的位置预测。
参数名 | 参数类型 | 描述 |
---|---|---|
input | PredictionInput const& | 预测输入参数 |
auto target = TargetSelector::GetTarget(1000.0f, eDamageType::Magical);
if (target) {
PredictionInput input;
input.Unit = target;
input.Delay = 0.25f;
input.Radius = 80.0f;
input.Speed = 1600.0f;
input.Type = eSkillshotType::SkillshotLine;
input.Collision = true;
input.CollisionObjects = { eCollisionableObjects::Minions, eCollisionableObjects::YasuoWall };
PredictionOutput pred = Prediction::GetPrediction(input);
if (pred.Hitchance >= eHitChance::High && pred.CollisionObjects.empty()) {
// 使用预测位置释放技能,且没有碰撞
}
}
# 类:PredictionInput
预测功能的输入参数类。
// 创建预测输入对象
PredictionInput input;
input.Unit = target;
input.Delay = 0.25f;
input.Radius = 80.0f;
input.Speed = 1600.0f;
input.Type = eSkillshotType::SkillshotLine;
# PredictionInput.AddHitBox
是否考虑目标的碰撞体积。
input.AddHitBox = true; // 考虑目标的碰撞体积
# PredictionInput.Aoe
预测是否为范围技能。
input.Aoe = true; // 设置为范围技能
# PredictionInput.Collision
预测是否需要进行碰撞检测。
input.Collision = true; // 开启碰撞检测
# PredictionInput.CollisionObjects
预测时要检测的碰撞对象列表。
input.CollisionObjects = { eCollisionableObjects::Minions, eCollisionableObjects::YasuoWall };
# PredictionInput.Delay
技能释放延迟(秒)。
input.Delay = 0.25f; // 设置技能延迟为0.25秒
# PredictionInput.From
Vector From() const
获取技能释放位置。
Vector castPosition = input.From();
# PredictionInput.From_Set
void From_Set(Vector const& value)
设置技能释放位置。
参数名 | 参数类型 | 描述 |
---|---|---|
value | Vector const& | 释放位置 |
Vector myPosition = ObjectManager::Player()->ServerPosition();
input.From_Set(myPosition);
# PredictionInput.Radius
技能半径。
input.Radius = 80.0f; // 设置技能半径为80单位
# PredictionInput.Range
技能最大射程。
input.Range = 900.0f; // 设置技能射程为900单位
# PredictionInput.RangeCheckFrom
Vector RangeCheckFrom() const
获取技能射程检测起点。
Vector rangeCheckPos = input.RangeCheckFrom();
# PredictionInput.RangeCheckFrom_Set
void RangeCheckFrom_Set(Vector const& value)
设置技能射程检测起点。
参数名 | 参数类型 | 描述 |
---|---|---|
value | Vector const& | 检测起点 |
Vector myPosition = ObjectManager::Player()->ServerPosition();
input.RangeCheckFrom_Set(myPosition);
# PredictionInput.RealRadius
float RealRadius() const
获取考虑了目标碰撞体积后的实际技能半径。
float actualRadius = input.RealRadius();
# PredictionInput.Speed
技能飞行速度。
input.Speed = 1600.0f; // 设置技能速度为1600单位/秒
# PredictionInput.Type
技能类型。
input.Type = eSkillshotType::SkillshotLine; // 设置为直线技能
# PredictionInput.Unit
预测的目标单位。
input.Unit = target; // 设置预测目标
# 类:PredictionOutput
预测功能的输出结果类。
// 获取预测结果
PredictionOutput output = Prediction::GetPrediction(input);
// 使用预测结果
if (output.Hitchance >= eHitChance::High) {
// 使用预测位置
}
# PredictionOutput.AoeTargetsHit
预测的范围技能可能命中的目标列表。
std::vector<AIBaseClient*> hitTargets = output.AoeTargetsHit;
# PredictionOutput.AoeTargetsHitCount
int AoeTargetsHitCount() const
获取范围技能可能命中的目标数量。
int hitCount = output.AoeTargetsHitCount();
if (hitCount >= 3) {
// 可能命中3个或更多目标,值得释放技能
}
# PredictionOutput.CastPosition
Vector CastPosition() const
获取建议的技能释放位置。
Vector castPos = output.CastPosition();
# PredictionOutput.CastPosition_Set
void CastPosition_Set(Vector const& value)
设置建议的技能释放位置。
参数名 | 参数类型 | 描述 |
---|---|---|
value | Vector const& | 释放位置 |
Vector bestPosition = Vector(1000.0f, 500.0f, 0.0f);
output.CastPosition_Set(bestPosition);
# PredictionOutput.CollisionObjects
预测技能路径上的碰撞对象列表。
if (output.CollisionObjects.empty()) {
// 没有碰撞,可以释放技能
}
# PredictionOutput.Hitchance
预测的命中几率。
if (output.Hitchance >= eHitChance::High) {
// 命中几率高,可以释放技能
}
# PredictionOutput.Input
用于生成此预测结果的输入参数。
PredictionInput originalInput = output.Input;
# PredictionOutput.UnitPosition
Vector UnitPosition() const
获取预测的目标单位位置。
Vector predictedPos = output.UnitPosition();
# PredictionOutput.UnitPosition_Set
void UnitPosition_Set(Vector const& value)
设置预测的目标单位位置。
参数名 | 参数类型 | 描述 |
---|---|---|
value | Vector const& | 单位位置 |
Vector predictedPosition = Vector(1000.0f, 500.0f, 0.0f);
output.UnitPosition_Set(predictedPosition);