Hello, I want to know how I can make a model to face 90, 180, 270, or 360 degrees, I want to make the Event choose a random rotation and spawn in facing that direction.
Here is a sample of the Events Code:
-- // Building
elseif event == 5 then
local Wedge = Events.Building.Wedge:Clone()
local position = Vector3.new(math.random(-214, 203), 8, math.random(-203, 214))
local cf = CFrame.new(position)
Wedge:PivotTo(cf)
Wedge.Parent = workspace.Generated
How can I get the model to face a random direction?
Knowing what’s the error would be very very helpful. Just saying “Hey I have an error how do I fix it?” isn’t enough to know what’s happening.
I can’t exactly remember what I did to get the error, I don’t remember what the error wasa in specific but I think it had to do with Orientation not being a member of the model
A model as no orientation, parts have. That may be confusing because in studio you can flip them with the orientation property but in script it doesn’t exist. Use for example :PivotTo().
First of all, if you want to transform a Vector3 orientation into a CFrame. You gotta use CFrame.Angles, implementing it is very easy, imagine this vector:
Vector3.new(90, 0, 45)
Let’s say we want to turn it into a CFrame.Angles, easy!:
CFrame.Angles(math.rad(90), 0, math.rad(45))
Now if you want to generate a random rotation that can vary from 90, 180, 270 and 360. It’s easy! You can use the modulus (%) operator, which is like a division (/), but it instead returns the rest of the division.
-- generate a random number that can be: 90, 180, 270 or 360:
local randomNumber = math.random(0, 360)
local result = math.floor(randomNumber - randomNumber%90)
result being the number you’re searching for.
Now just hook this number up to CFrame.Angles inside your PivotTo function and you’re done!
EDIT: I forgot to mention that if you want to add a CFrame.Angles to a CFrame, you gotta multiply it this way:
Sorry for the late reply, but in the code you attached, you’re trying to turn a CFrame into a Vector3. Not only that this method completely removes the CFrame’s orientation but it also isn’t compatible with PivotTo. Here’s a fixed version of your code:
-- // Building
elseif event == 5 then
local Wedge = Events.Building.Wedge:Clone()
local position = CFrame.new(math.random(-214, 203), 8, math.random(-203, 214)) * CFrame.Angles(math.rad(90), 8, math.rad(45))
Wedge:PivotTo(position)
Wedge.Parent = workspace.Generated
That’s the version that prevents the error from occuring. However as you were searching for a “random orientation only in 90, 180, 270 and 360” this is its final code:
-- // Building
elseif event == 5 then
local Wedge = Events.Building.Wedge:Clone()
local RandomNumber = math.random(0, 360)
RandomNumber = math.floor(RandomNumber - RandomNumber%90)
local position = CFrame.new(math.random(-214, 203), 8, math.random(-203, 214)) * CFrame.Angles(0, math.rad(RandomNumber), 0)
Wedge:PivotTo(position)
Wedge.Parent = workspace.Generated