# Very confusing situation

Hey,

Basically, I make a wall using a matrix and then create a primary part in the middle and weld everything together with that primary part:

``````-- Need to reset the matrix when respawned.

local ReplicatedStorage = game:GetService "ReplicatedStorage"

local Component = require(ReplicatedStorage.Packages.Component)

local Assets = ReplicatedStorage:WaitForChild("Assets")

local Wall = Component.new {
Tag = "Wall"
}

function Wall:Construct()
self.Rows = 2
self.Columns = 12
self.Sparsity = .7

self.CenterPosition = nil

self.Matrix = {}
end

function Wall:GenerateRandom(): number
return math.random() > self.Sparsity and 1 or 0
end

function Wall:GenerateMatrix()
for I = 1, self.Rows do
self.Matrix[I] = {}

for J = 1, self.Columns do
self.Matrix[I][J] = self:GenerateRandom()
end
end
end

function Wall:Start()
self:GenerateMatrix()

for I = 1, self.Rows do
for J = 1, self.Columns do
if self.Matrix[I][J] == 1 then
local CrackedCrate = Assets.CrackedCrate:Clone()
CrackedCrate.Position = Vector3.new((J - 1) * CrackedCrate.Size.X, (I - 1) * CrackedCrate.Size.Y, 0)
CrackedCrate.Parent = self.Instance
else
local Crate = Assets.Crate:Clone()
Crate.Position = Vector3.new((J - 1) * Crate.Size.X, (I - 1) * Crate.Size.Y, 0)
Crate.Parent = self.Instance
end
end
end

self.CenterPosition = self.Instance:GetBoundingBox()

local PrimaryPart = Instance.new("Part")
PrimaryPart.Transparency = 1
PrimaryPart.Anchored = true
PrimaryPart.CanCollide = false
PrimaryPart.CFrame = self.CenterPosition
PrimaryPart.Parent = self.Instance
self.Instance.PrimaryPart = PrimaryPart

for _, Crate in self.Instance:GetChildren() do
if Crate.Name ~= "Part" then
local Weld = Instance.new("WeldConstraint")
Weld.Part0 = PrimaryPart
Weld.Part1 = Crate
Weld.Parent = PrimaryPart
end
end
end

function Wall:Stop()
self.Matrix = {}
end

return Wall
``````

In my round module, I pick a random thing from a folder to be spawned in (e.g. the wall). However, for some reason it says that the primary part is nil? Why would it be nil, I have no idea. Thus, my odd situation.

``````local ReplicatedStorage = game:GetService "ReplicatedStorage"

local Knit = require(ReplicatedStorage.Packages.Knit)
local Trove = require(ReplicatedStorage.Packages.Trove)

local Templates = ReplicatedStorage:WaitForChild("Templates"):GetChildren()

local RoundService = Knit.CreateService {
Name = "RoundService",

_Trove = Trove.new(),
}

function RoundService:_RandomObstacle()
return Templates[math.random(1, #Templates)]
end

function RoundService:StartRound()
local Object = self:_RandomObstacle():Clone()
print(Object.PrimaryPart) -- nil???
Object.Parent = workspace

end

function RoundService:EndRound()
self._Trove:Clean()
end

function RoundService:KnitStart()
self:StartRound()
end

return RoundService
``````

Any help is help, thank you.

Sorry to bump this up, but I have yet to find any solution to my problem.

Are you using an Instance that supports the PrimaryPart variable?
Model.PrimaryPart.

Yes, I am using a model and creating a primary part in there.