I am trying to spawn cars based on the number of players in a racing game. However, it seems to be that depending on the number of players -- those cars spawn within each other, therefore, glitching. Because of this, you can't drive them either. The car model is in ServerStorage and being called from there. But since models do not have a .Position property they can't be separated with that property. What can I do in order to put distance/separate in between the cars, so they can be drive-able?
This is the code:
function createCars() for _, object in pairs(game.ServerStorage:GetChildren()) do local carCopy = game.ServerStorage.Car:Clone() carCopy.Parent = game.Workspace carCopy:MakeJoints() end end for i = 1, game.Players.NumPlayers do createCars() end
USE THE MOVETO() FUNCTION
The first thing you should do is move the car into ServerStorage. Since models do not have a .Position property, you can use :MoveTo( vector3.new( x, y, z ) ) as used below, which places the cars in race car formation. It is up to you how you want the cars.
function createCars() for i = 1, numPlayers do for _, object in pairs(game.ServerStorage:GetChildren()) do local carCopy = game.ServerStorage.Car:Clone() carCopy.Parent = game.Workspace carCopy:MakeJoints() if i % 2 == 0 then --Sets the distance between cars for even players carCopy:MoveTo(Vector3.new(-184, 0, 95+i*15)) else --Sets the distance between cars for odd players carCopy:MoveTo(Vector3.new(-208, 0, 95+i*15)) end end end end createCars()
One small tip: place the create cars function inside the game loop and call the function from within the game loop. Doing so helps update the players when the game starts again.