Hey!
It looks like you had the same problem following GnomeCode’s TDS tutorial as I did.
You can use CFrame.lookAt() as an alternative to BodyGyros. I found this video that explains how that works.
With that knowledge, I wrote the below code for the turning:
-- Replace .PrimaryPart with .HumanoidRootPart if you need to.
tower.PrimaryPart.CFrame = CFrame.lookAt(tower.PrimaryPart.Position, target.PrimaryPart.Position)
There’s a video by normal error on optimizing towers and they showcase a great way of this by tweening the primary parts rotation (this post is ancient but still) it’s a good video and it has some other better stuff aswell inside