77 lines
2.8 KiB
Lua
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; |