47 lines
1.8 KiB
Lua
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; |