Hello people!
I’ve been trying for 10 minutes to use the “lookVector” property of a CFrame, but it won’t work.
Tried everything. Basically, I want my part to go 5 studs forward. That’s it.
How to use lookVector?
Thanks in advance,
-Meaxis
Hello people!
I’ve been trying for 10 minutes to use the “lookVector” property of a CFrame, but it won’t work.
Tried everything. Basically, I want my part to go 5 studs forward. That’s it.
How to use lookVector?
Thanks in advance,
-Meaxis
LookVector
is a property of CFrames
aka Coordinate Frames
that represent the unit vector of the CFrame direction. If you’d like to construct your own CFrames with lookvectors, you can call CFrame.fromMatrix
.
CFrame.fromMatrix ( Vector3 pos, Vector3 vX, Vector3 vY, Vector3 vZ )
Creates a CFrame from a translation and the columns of a rotation matrix. If vz is excluded, the third column is calculated as [vx:Cross(vy).Unit].
This example uses CFrame.fromMatrix()
to create a CFrame located at eye with it’s lookVector pointing towards the target position.
function lookAt(target, eye)
local forwardVector = (eye - target).Unit
local upVector = Vector3.new(0, 1, 0)
-- You have to remember the right hand rule or google search to get this right
local rightVector = forwardVector:Cross(upVector)
local upVector2 = rightVector:Cross(forwardVector)
return CFrame.fromMatrix(eye, rightVector, upVector2)
end
To get more information here’s the CFrame documentation.
Look/Up/Right Vectors describe the direction of the Front/Top/Right faces.
-- Preferred way
-- moves it forward 5 studs (relative to it's orientation), forward is NEGATIVE on the Z-plane
part.CFrame = part.CFrame * CFrame.new(0, 0, -5)
-- Way using lookVector
-- If facing straight forward, lv is <0, 0, -1>
local cf = part.CFrame
local lv = cf.lookVector
part.CFrame = cf + (lv * Vector3.new(5, 5, 5))
Okay. Thanks alot for your answer, but it’s really complicated, didn’t understand quite well even though I tried to test it in game, read the docs and read the script 8 times. CFrame isn’t my thing, but @Darkmist101 posted an easier-to-understand answer. Thanks alot for your answer tho.
Solved my problem! Marking as solution.
A direction is yes (target - eye) or then I can do that:
local Part = Istance.new("Part", workspace)
Part.Position = Vector3.new(0,10,0)
local eye = Part.Position
local target = Vector3.new(0,0,1)
wait(10)
Part.CFrame.LookVector = (eye - target)
I didn’t even realize that! I feel proud now