You can write your topic however you want, but you need to answer these questions:
- What do you want to achieve? Keep it simple and clear!
I am trying to make my ray module OOP based. Before I simply had functions without any meta tables but after seeing how powerful OOP can be I am attempting to convert it.
- What is the issue? Include screenshots / videos if possible!
I get the error that says attempt to index boolean with printinstancename so I assume the newcar is returning false. I do not know why it is not calling the function as I am using metatables.
- What solutions have you tried so far? Did you look for solutions on the Developer Hub?
I looked over the dev forum post I got it from All about Object Oriented Programming but this is looks exactly like mine.
Here is the current ray module
RayService._index = RayService
function RayService.new(origin, endPos, playerName)
local newray = {}
setmetatable(newray, RayService)
local raycastParams = RaycastParams.new()
raycastParams.FilterDescendantsInstances = {workspace.Baseplate}
raycastParams.FilterType = Enum.RaycastFilterType.Whitelist
local result = workspace:Raycast(origin, (endPos - origin), raycastParams)
if result then
newray.Instance = result.Instance
newray.Position = result.Position
newray.Material = result.Material
else
newray = false
end
return newray
end
function RayService:PrintInstanceName()
print(self.Instance.Name)
end
return RayService