---@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;