2025-01-04 23:00:19 +08:00

77 lines
2.8 KiB
Lua

---@class BP_MoveShootingTargetManager_C:AActor
---@field Sphere USphereComponent
---@field DefaultSceneRoot USceneComponent
---@field SpawnShootingTargetNum int32
---@field ShootingTargetClass UClass
---@field DelayUpTime float
--Edit Below--
local BP_MoveShootingTargetManager = {
AllTargetPos = {};
AllShootingTargets = {};
MoveIndex = 0;
};
function BP_MoveShootingTargetManager:ReceiveBeginPlay()
self.SuperClass.ReceiveBeginPlay(self);
if UGCGameSystem.IsServer() then
self:SpawnShootingTargets()
UGCEventSystem.SetTimerLoop(self, self.UpdateMove, self.DelayUpTime)
end
end
function BP_MoveShootingTargetManager:SpawnShootingTargets()
local ForwardVector = self:GetActorForwardVector()
local SphereRadius = self.Sphere:GetScaledSphereRadius()
local SelfPos = self:K2_GetActorLocation()
SelfPos.Z = SelfPos.Z + 88.0
for i = 0, self.SpawnShootingTargetNum - 1 do
local TempForward = KismetMathLibrary.GreaterGreater_VectorRotator(ForwardVector, {Roll = 0., Pitch = 0., Yaw = 360./ self.SpawnShootingTargetNum * i})
local TargetPos = VectorHelper.Add(SelfPos, VectorHelper.MulNumber(TempForward, SphereRadius))
local TargetRot = KismetMathLibrary.MakeRotFromX(KismetMathLibrary.GreaterGreater_VectorRotator(TempForward, {Roll = 0., Pitch = 0., Yaw = 180}))
local ChildShootingTarget = UGCGameSystem.SpawnActor(self, self.ShootingTargetClass,TargetPos, TargetRot, VectorHelper.ScaleOne(), self)
self.AllShootingTargets[i] = ChildShootingTarget
self.AllTargetPos[i] = VectorHelper.ToLuaTable(TargetPos)
end
end
function BP_MoveShootingTargetManager:UpdateMove()
local LastPos = self.AllTargetPos[self.MoveIndex]
self.MoveIndex = (self.MoveIndex + 1) % self.SpawnShootingTargetNum
for i = 0, self.SpawnShootingTargetNum - 1 do
local NowPos = self.AllTargetPos[(i + self.MoveIndex) % self.SpawnShootingTargetNum]
--UGCLogSystem.Log("[BP_MoveShootingTargetManager_UpdateMove] LastPos:%s, NowPos:%s", VectorHelper.ToString(LastPos), VectorHelper.ToString(NowPos))
local TargetRot = KismetMathLibrary.MakeRotFromX(VectorHelper.Sub(LastPos, NowPos))
self.AllShootingTargets[i]:K2_SetActorLocation(LastPos)
self.AllShootingTargets[i]:K2_SetActorRotation(TargetRot)
self.AllShootingTargets[i]:SetTargetPos(NowPos)
LastPos = NowPos
end
end
--[[
function BP_MoveShootingTargetManager:ReceiveTick(DeltaTime)
self.SuperClass.ReceiveTick(self, DeltaTime);
end
--]]
--[[
function BP_MoveShootingTargetManager:ReceiveEndPlay()
self.SuperClass.ReceiveEndPlay(self);
end
--]]
--[[
function BP_MoveShootingTargetManager:GetReplicatedProperties()
return
end
--]]
--[[
function BP_MoveShootingTargetManager:GetAvailableServerRPCs()
return
end
--]]
return BP_MoveShootingTargetManager;