UGCProjects/GZJ/Script/SimpleSkill/Selector/SimpleSkillSelector_CircleRange.lua
2025-01-08 22:46:12 +08:00

47 lines
1.8 KiB
Lua

local SimpleSkillSelector = require("Script.SimpleSkill.Selector.SimpleSkillSelector")
local SimpleSkillSelector_CircleRange = LuaClass("SimpleSkillSelector_CircleRange", SimpleSkillSelector)
function SimpleSkillSelector_CircleRange:ctor()
SimpleSkillSelector_CircleRange.super.ctor(self)
end
function SimpleSkillSelector_CircleRange:InitSelectorFromData(SelectorData, CasterPawn)
SimpleSkillSelector.InitSelectorFromData(self, SelectorData, CasterPawn)
end
--- 子类实现
function SimpleSkillSelector_CircleRange:ActivateSelector()
SimpleSkillSelector.ActivateSelector(self)
UE.Log("[SimpleSkillSelector_CircleRange] activated")
self:GetPawnsInCircleRange()
end
function SimpleSkillSelector_CircleRange:GetPawnsInCircleRange()
local Radius = self.Param_Float
local Forward = self.CasterPawn:GetActorForwardVector()
local SphereLoc = VectorHelper.Add(self.CasterPawn:K2_GetActorLocation(), VectorHelper.MulNumber(KismetMathLibrary.Normal(Forward), self.ForwardOffset))
--减去人物半高才能贴到地面
SphereLoc.Z = SphereLoc.Z - 88.0
local ObjectTypes = {}
local ActorClassFilter = UE.LoadClass(BPClassPath.MonsterBase)
local ActorsToIgnore = self:GetIgnoredActors()
local RetVal, OutActors = KismetSystemLibrary.SphereOverlapActors(self.CasterPawn, SphereLoc, Radius, ObjectTypes, ActorClassFilter, ActorsToIgnore)
if GlobalConfigs.OpenDebug then
UnrealNetwork.CallUnrealRPC_Multicast(self.CasterPawn, "DrawDebugSphere", VectorHelper.ToLuaTable(SphereLoc), {1,0,0,1}, Radius)
end
if RetVal then
local RetLimitNum = self.LimitNum > 0 and (self.LimitNum > #OutActors and #OutActors or self.LimitNum) or #OutActors
for i = 1, RetLimitNum, 1 do
table.insert(self.TargetPawns, OutActors[i])
end
end
end
return SimpleSkillSelector_CircleRange;