local Player = game.Players.PlayerAdded:Wait()
local Character = Player.Character or Player.CharacterAdded:Wait()
local PrimaryPart = Character.PrimaryPart
trap.CFrame = CFrame.new(PrimaryPart.Position - Vector3.new(0,2.7,0)) + PrimaryPart.CFrame.LookVector
EDIT:
Other one didn’t work, so I remade it:
local Player = game.Players.PlayerAdded:Wait()
local Character = Player.Character or Player.CharacterAdded:Wait()
local PrimaryPart = Character.PrimaryPart
local LookVector = PrimaryPart.CFrame.LookVector
trap.CFrame = CFrame.new(PrimaryPart.Position - Vector3.new(0,2.7,0)) *
CFrame.lookAt(Vector3.new(0,0,0), Vector3.new(LookVector.X, 0, LookVector.Z))
You can use math.asin to get Y-Axis angle from the LookVector Try this:
local lookVector = player.CFrame.LookVector
local yAngle = math.asin(lookVector.Y) -- Get the tilt in radians
trap.CFrame = CFrame.new(player.Position - Vector3.new(0, 2.7, 0)) * CFrame.Angles(yAngle, 0, 0)
This will make the trap align with the players vertical LookVector angle
This works, but is very laggy. Is there any alternatives? (I’m making a trap that spawns at your position and the way you’re looking when you press a key, for some context)
local Player = game.Players.PlayerAdded:Wait()
local Character = Player.Character or Player.CharacterAdded:Wait()
local PrimaryPart = Character.PrimaryPart
local LookVector = PrimaryPart.CFrame
local X, Y, Z = LookVector:ToEulerAnglesXYZ()
trap.CFrame = CFrame.new(PrimaryPart.Position - Vector3.new(0,2.7,0)) * CFrame.Angles(X, Y, Z)